Почему ссылки на атрибуты действуют так с наследованием Python? [Дубликат]

На этот вопрос уже есть ответ здесь:

Как избежать совместного использования данных классов между экземплярами? 8 ответов

Следующее кажется странным. По сути, атрибут 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) - но когда такое поведение желательно?

Ответы на вопрос(3)

Ваш ответ на вопрос