【发布时间】:2013-12-26 07:54:05
【问题描述】:
在 python 中运行以下代码时,我创建了一个类的 2 个对象,其中包含一个列表对象:
class Test():
def run(self):
obj1 = klasse("Werner")
obj2 = klasse("Franz")
print obj1.name
print obj2.name
obj2.add_name("Thomas")
print obj2.name
class klasse(object):
name = [];
def __init__(self, value):
self.name.append(str(value))
def add_name(self, value):
self.name.append(str(value))
if __name__ == "__main__":
Test().run()
这会在控制台中返回:
['Werner', 'Franz']
['Werner', 'Franz']
['Werner', 'Franz', 'Thomas']
问题:这似乎是两个创建的 klasse.objects 中的同一个列表对象。在每个创建的对象中隔离名称列表的解决方案是什么?
控制台输出应该是:
['Werner']
['Franz']
['Franz', 'Thomas']
【问题讨论】:
-
你有一个 class 级别,而不是 instance 级别
name:修改__init__使其具有self.name = []。 .. 试图为此找到合适的骗子 -
请正确缩进您的代码。这是 Python。
标签: python list object class-variables