我在类外部的函数中为类的对象设置一些属性,并将对象存储在字典中。我无法看到对象存储值的变化,将检索默认的初始化值。
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
打印空白,这是默认值。在超出范围后,垃圾清理器是否从内存中删除了对象?有更好的方法吗?
答案 0 :(得分:0)
您需要使用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