使用一个类在字典中创建多个实例,它们的属性不是唯一的。我希望他们每个人都有自己独特的特点。你是怎么做到的?你知道吗
代码:
class a(object):
attr_a = {}
def __init__(self, a={}):
self.attr_a = a
if __name__ == '__main__':
b = a()
c = a()
b.attr_a['abc'] = 'abc'
c.attr_a['abc'] = 'def'
print(b.attr_a)
print(c.attr_a)
结果:
{'abc': 'def'}
{'abc': 'def'}
想要的结果:
{'abc': 'abc'}
{'abc': 'def'}
这里有两个问题:
1)对于实例级属性,与类级属性相反,不在类级声明。所以,删除类中的
attr_a = {}
。你知道吗2)默认值
a={}
是在类/函数声明时计算的,而不是在实例创建/函数调用时,因此很少使用可变对象作为默认值。这将导致使用默认a
值创建的类的所有实例共享相同的attr_a
dict。您应该使用a=None
作为默认值,然后在__init__
内部实例化它,如下所示:相关问题 更多 >
编程相关推荐