1

使用一个类在字典中创建多个实例,它们的属性不是唯一的。我希望他们每个人都有自己独特的属性。你怎么做到这一点?

代码:

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'}
4

1 回答 1

2

这里有两个问题:

1) 对于实例级属性,与类级属性相反,不要在类级声明。所以,attr_a = {}在你的课堂上删除。

2)默认值a={}是在类/函数声明时评估的,而不是实例创建/函数调用时,所以很少应该使用可变对象作为默认值。这会导致使用默认值创建的类的所有实例a共享相同的attr_a字典。您应该将a=None其用作默认值,然后在其中实例化它__init__,如下所示:

def __init__(self, a=None):
        self.attr_a = a or {}
于 2013-02-18T03:43:27.957 回答