在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
的默认值:它似乎在两个实例中都引用了相同的对象。 但为什么会这样呢?并且有一个比我更严格的解决方案吗?