I'm wondering how come the self.name is 'abc' when the super().__init__('abc') gets called, but it becomes 'Nicky' when super().override() is called?
Is it because the Derived instance hasn't been created yet during the time super().__init__('abc') is called so the Base class's properties are used instead?
class Base():
def __init__(self, name):
self.name = name
self.base = 'base class'
print('Base', self.name)
def override(self):
print('Base-override', self.name)
class Derived(Base):
def __init__(self, name, age):
super().__init__('abc')
self.name = name
self.age = age
def override(self):
super().override()
d = Derived('Nicky', 20) # Base abc
d.override() # Base-override Nicky