6.3. OOP Inheritance Overload¶
Child inherits all fields and methods from parent
Used to avoid code duplication
- overload¶
When child has method or attribute with the same name as parent. In such case child attribute will be used (will overload parent).
6.3.1. Overload Method¶
>>> class Account:
... def say_hello(self):
... print('Hello Account')
>>>
>>>
>>> class User(Account):
... def say_hello(self):
... print('Hello User')
>>>
>>>
>>> mark = User()
>>> mark.say_hello()
Hello User
6.3.2. Overload Init¶
>>> class Account:
... def __init__(self):
... print('Init Account')
>>>
>>>
>>> class User(Account):
... pass
>>>
>>>
>>> mark = User()
Init Account
>>> class Account:
... def __init__(self):
... print('Init Account')
>>>
>>>
>>> class User(Account):
... def __init__(self):
... print('Init User')
>>>
>>>
>>> mark = User()
Init User
6.3.3. Overload ClassVars¶
>>> class Account:
... firstname = 'Mark'
... lastname = 'Watney'
... group = None
>>>
>>>
>>> class User(Account):
... group = 'admins'
>>>
>>>
>>> mark = User()
>>>
>>> mark.firstname
'Mark'
>>> mark.lastname
'Watney'
>>> mark.group
'admins'
6.3.4. Overload Attribute¶
>>> class Account:
... def __init__(self):
... self.firstname = 'Mark'
... self.lastname = 'Watney'
... self.group = None
>>>
>>>
>>> class User(Account):
... def __init__(self):
... self.group = 'admins'
>>>
>>>
>>> mark = User()
>>> vars(mark)
{'group': 'admins'}