我尝试制作具有不同内容的对象列表,但在创建实例时,它会编辑所有其他实例。
class Example(object):
name = ''
@classmethod
def __init__(cls, name):
cls.name = name
col = []
col.append(Example('text1'))
col.append(Example('text2'))
for item in col:
print item.name
打印
'text2'
'text2'
当我希望它打印时
'text1'
'text2'
我也试过
var = Example('text1')
col.append(var)
我无法设置不同的变量名称,因为我希望它在循环中创建实例。
答案 0 :(得分:4)
不要使__init__
成为一种类方法;它是实例初始化程序:
class Example(object):
name = ''
def __init__(self, name):
self.name = name
通过使其成为类方法,您可以更改类,而不是创建新实例。
如果没有@classmethod
装饰器,则类级name
属性完全是可选的,您可以将其删除以供大多数使用。
答案 1 :(得分:0)
你想要这个:
class Example(object):
def __init__(self, name):
self.name = name