Похоже, странно. В принципе, атрибут 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) - но когда такое поведение желательно?