Проблемы с наследованием нескольких классов от одного родительского
В данный момент занимаюсь написанием модуля, где столкнулся с проблемой, которую хорошо иллюстрирует следующий пример.
class FatherClass:
def __init__(self, name:str, childs:list = []):
self._childs = childs
def add_child(self, child):
self._childs.append(child)
def print_info(self):
print(self._childs)
class Subclass1(FatherClass):
def __init__(self):
super().__init__('s1')
class Subclass2(FatherClass):
def __init__(self):
super().__init__('s2')
s1 = Subclass1()
s2 = Subclass2()
s1.add_child('123')
s2.add_child(s1)
s2.add_child('456')
s1.print_info()
Результатом выполнения этого кода будет
['123', <__main__.Subclass1 object at 0x0000023774EF1F70>, '456']
То есть, насколько я понял, объекты s1 и s2 имеют аттрибут _childs, ссылающийся на один и тот же участок памяти. Почему такое может происходить, ведь при инициализации сабклассов по-идее должен создаваться отдельный новый список для каждого нового объекта, и как получить требуемое поведение при наследовании (чтоб для каждого объекта подкласса создавались новые независящие друг от друга аттрибуты)?