有没有办法为python中的每个实例创建唯一的dictionary属性

2024-04-25 17:34:50 发布

您现在位置:Python中文网/ 问答频道 /正文

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

代码:

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

Tags: 实例代码nameselfif字典属性object
1条回答
网友
1楼 · 发布于 2024-04-25 17:34:50

这里有两个问题:

1)对于实例级属性,与类级属性相反,不在类级声明。所以,删除类中的attr_a = {}。你知道吗

2)默认值a={}是在类/函数声明时计算的,而不是在实例创建/函数调用时,因此很少使用可变对象作为默认值。这将导致使用默认a值创建的类的所有实例共享相同的attr_adict。您应该使用a=None作为默认值,然后在__init__内部实例化它,如下所示:

def __init__(self, a=None):
        self.attr_a = a or {}

相关问题 更多 >