以下は奇妙に思えます。基本的に、somedata属性はから継承したすべてのクラス間で共有されているようですthe_base_class
。
class the_base_class:
somedata = {}
somedata['was_false_in_base'] = False
class subclassthing(the_base_class):
def __init__(self):
print self.somedata
first = subclassthing()
{'was_false_in_base': False}
first.somedata['was_false_in_base'] = True
second = subclassthing()
{'was_false_in_base': True}
>>> del first
>>> del second
>>> third = subclassthing()
{'was_false_in_base': True}
関数で定義self.somedata
する__init__
ことは明らかにこれを回避する正しい方法です(したがって、各クラスには独自のsomedata
dictがあります)-しかし、そのような動作が望ましいのはいつですか?