Проблемы с наследованием Python

Код, который у меня есть с проблемой, очень длинный, поэтому я сделал пример, который отображает мою проблему.

У меня есть два класса, которые наследуются от базового класса ( BaseClass ). Оба этих класса добавляют некоторые элементы в self.Dict . Однако они, похоже, пересекают загрязненные элементы. Я ожидал, что c0.Dict вернет {'class0': 0} и c1.Dict, чтобы вернуть {'class1': 1} . Однако оба они возвращают {'class0': 0, 'class1': 1} . Почему они пересекают загрязнение?

class BaseClass : def __init__ (self, _dict={}) : self.Dict = _dict class Class0 (BaseClass) : def __init__ (self) : BaseClass.__init__(self) self.Dict['class0'] = 0 class Class1 (BaseClass) : def __init__ (self) : BaseClass.__init__(self) self.Dict['class1'] = 1 c0 = Class0() c1 = Class1() print c0.Dict print c1.Dict 

Вы попали в python gotcha: mutable аргументы по умолчанию.

http://blog.objectmentor.com/articles/2008/05/22/pythons-mutable-default-problem

 class BaseClass : def __init__ (self, _dict=None) : self.Dict = _dict or {}