使用一个类在字典中创建多个实例,它们的属性不是唯一的。我希望他们每个人都有自己独特的属性。你如何做到这一点?
代码:
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
字典。您应该使用 a=None
作为默认值,然后在 __init__
内部实例化它,如下所示:
def __init__(self, a=None):
self.attr_a = a or {}
关于python - 有没有办法为python中的每个实例创建唯一的字典属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14929098/