在类__init__中清空dict作为参数默认值

时间:2017-11-14 01:21:55

标签: python dictionary default-value

在Python中为什么要这个类

class MyClass():
    def __init__(self, _my_dict={}):
        self.my_dict = _my_dict

有以下非常奇怪和不受欢迎的行为:

>>> a = MyClass()
>>> a.my_dict['greet'] ="hallo"
>>> b = MyClass()
>>> b.my_dict['greet'] ="ciao"
>>> 
>>> print(a.my_dict)
{'greet': 'ciao'}
>>> print(b.my_dict)
{'greet': 'ciao'}

注意:我知道我可以在None方法中使用_my_dict __init__默认值来解决此问题:

class MyClass():
    def __init__(self, _my_dict=None):
        if _my_dict is None:
            self.my_dict = {}
        else:
            self.my_dict = _my_dict

问题在于' {}'作为_my_dict的默认值:它似乎在两个实例中都引用了相同的对象。 但为什么会这样呢?并且有一个比我更严格的解决方案吗?

0 个答案:

没有答案