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'}

6.3.5. Assignments