Why is letters shared between child instances below?
class Parent:
letters = list()
def add(self, letter):
self.letters.append(letter)
class A(Parent):
def add_a(self):
self.add('a')
class B(Parent):
def add_b(self):
self.add('b')
a = A()
b = B()
a.add_a()
b.add_b()
print(a.letters)
# a.letters now contains a renegade b!
If I redefine Parent as such
class Parent:
def __init__(self):
self.letters = list()
def add(self, letter):
self.letters.append(letter)
a and b have separate lists of letters. This what I would've expected from the first code. What's the difference?