Introduction

Two important terms to understand when learning Python and OOP (object-oriented programming) are inheritance and polymorphism.

Inheritance

Inheritance establishes a relationship between two classes - parent (superclass) and child (subclass).
Child classes keep the attributes and methods of their parent, whilst also adding new attributes or methods of its own. Furthermore, the child class can also override methods of its parent.

Below shows an example:

class NetDevice(object):
    def get_dc(self):
        print("London")
        
class NetDeviceCisco(NetDevice):
    pass
    
class NetDeviceJuniper(NetDevice):
    pass
>>> NetDevice().get_dc()
London
>>> NetDeviceCisco().get_dc()
London
>>> NetDeviceJuniper().get_dc()
London

Polymorphism

Polymorphism refers to a principle in biology in which an organism or species can have many different forms or stages. This principle can also be applied to object-oriented programming and languages like Python. Therefore Polymorphism can be defined as changing the behavior of a superclass from within the subclass.

Below shows an example. As you can see we are changing the get_os_type method from our superclass from within our subclass.

class NetDevice(object):
    def get_dc(self):
        print("London")

    def get_os_type(self):
        print("Unknown")
        
class NetDeviceCisco(NetDevice):
    def get_os_type(self):
        print("IOS")
        
class NetDeviceJuniper(NetDevice):
    def get_os_type(self):
        print("JunOS")
>>> NetDevice().get_dc()
London
>>> NetDevice().get_os_type()
Unknown
>>>
>>> NetDeviceCisco().get_dc()
London
>>> NetDeviceCisco().get_os_type()
IOS
>>>
>>> NetDeviceJuniper().get_dc()
London
>>> NetDeviceJuniper().get_os_type()
JunOS
Ready to Master Network Automation? Start Your Journey Today!
Our membership provides:
  • Full deep-dive course library (inc. Batfish, pyATS, Netmiko)
  • Code repositories inc. full course code, scripts and examples
  • 24x7 multi-vendor labs (Arista, Cisco, Juniper)
  • Private online community
  • Live monthly tech sessions
  • Access to tech session library

Join Now ➜