class Animal:
def __init__(self, name='', child=[]):
self.name=name
self.child=child
val = []
dog = Animal(name="Foo")
val.append(dog.__dict__)
cat = Animal(name='John')
cat.child.append('Doe')
val.append(cat.__dict__)
print(val)
Result:
[{'name': 'Foo', 'child': ['Doe']}, {'name': 'John', 'child': ['Doe']}]
Expected:
[{'name': 'Foo', 'child': []}, {'name': 'John', 'child': ['Doe']}]
I am assuming it's something to do with memory allocation but can't work around my head how it works.