是否可以将类实例存储为新实例。例如,
class ClassName(object):
def __init__(self, **kw):
self._name = ''
self._time = float(timeString)
for attr, val in kw.items():
if val == None:
continue
setattr(self, '_' + attr, val)
def getName(self): return self._name
name = property(getName)
但是我们可以说我们将实例存储在一个类似的列表中。
cl = ClassName('name1')
cl2 = ClassName('name2')
li = list()
li.append(cl)
li.append(cl2)
然后我们遍历它们。
for c in li:
print( c.name )
它们会有不同的值,或者它们是否相同,如果是这样,我怎样才能给类实例一个唯一的id?
答案 0 :(得分:1)
如果我明白你的意思,那么是的:他们会有不同的价值观。解决了评论中提到的问题:
class ClassName(object):
def __init__(self, **kw):
self._name = ''
for attr, val in kw.items():
if val == None:
continue
setattr(self, '_' + attr, val)
def getName(self): return self._name
name = property(getName)
cl = ClassName(name='name1')
cl2 = ClassName(name='name2')
li = list()
li.append(cl)
li.append(cl2)
然后:
>>> li[0].name
'name1'
>>> li[1].name
'name2'
(您使用关键字参数设置的名称)。
答案 1 :(得分:0)
使用跟踪类变量的字典对象,可以添加和删除类的变量。
只需将字典传递给对象内置字典update()
的{{1}}方法即可。键将是可从类中访问的变量名。
__dict__
请参阅下面的add_food()函数以获取真实示例。
class EmptyClass:
pass
var_name = 'new_variable'
var_value = 'This variable is a test, anything can go here'
obj = EmptyClass()
obj.__dict__.update( {var_name: var_value} )
print obj.new_variable