[英]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.