繁体   English   中英

访问字典中存储的对象的属性

[英]Access the attributes for an object stored in dictionary

我在类外部的函数中为类的对象设置一些属性,然后将该对象存储在字典中。 我看不到对象存储值的更改,检索了默认的初始化值。

class Logpkt():
    def __init__(self):
    self.a=0
    self.b=''
    self.c=''
    self.d=''
    self.e=''
    self.f=''
    self.g=''
    self.h=''
    self.i=''
    self.j=''
    self.k=''


def set_class(**kwargs):
    temp = Logpkt()
    print(kwargs)
    for attr in kwargs.keys():
        temp.attr=kwargs[attr]
        print temp.attr,kwargs[attr]
    return temp

obj={}
obj[1]=set_class(a=1,b=2)
obj[2]=set_class(c=1,d=2)
print obj[1].a
print obj[2].c

打印空白,这是默认值。 超出范围后,垃圾清理程序是否正在从内存中删除对象? 有一个更好的方法吗?

您需要像这样使用setattr

码:

def set_class(**kwargs):
    temp = Logpkt()
    for attr, value in kwargs.items():
        setattr(temp, attr, value)
    return temp

测试代码:

class Logpkt():
    def __init__(self):
        self.a = 0

        self.b = ''
        self.c = ''
        self.d = ''
        self.e = ''
        self.f = ''
        self.g = ''
        self.h = ''
        self.i = ''
        self.j = ''
        self.k = ''


def set_class(**kwargs):
    temp = Logpkt()
    print(kwargs)
    for attr, value in kwargs.items():
        setattr(temp, attr, value)
    return temp


obj = {}
obj[1] = set_class(a=1, b=2)
obj[2] = set_class(c=3, d=2)
print(obj[1].a)
print(obj[2].c)

结果:

{'a': 1, 'b': 2}
{'c': 3, 'd': 2}
1
3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM