listing polymorphismmove function works in different ways for different class-objects #main py #import class 'animalbirdfrom scarysound py from scarysound import animalbird def main()create objects of animal and bird class animal( bird( polymorphism scarysound(animals are running away due to scary sound scarysound(birds are flying away due to scary sound standard boilerplate to set 'mainas starting function if __name__=='__main__'main(abstract class and method abstract classes are the classes which contains one or more abstract methodand abstract methods are the methods which does not contain any implemetationbut the child-class need to implement these methods otherwise error will be reported in this waywe can force the child-class to implement certain methods in it we can defineabstract classes and abstract method using keyword 'abcmetaand 'abstractmethodrespectivelyas shown in lines and respectively of listing since'scarysoundis defined as abstractmethod at line - therefore it is compulsory to implement it in all the subclasses notelook at the class 'insectin listing where 'scarysoundwas not defined but code was running correctlybut now the 'scarysoundis abstractmethodtherefore it is compulsory to implement itas done in line of listing listing abstract class and method #junglebook py from abc import abcmetaabstractmethod #abstract class and abstract method declaration class jungle(metaclass=abcmeta)#constructor with default values def __init__(selfname="unknown")self visitorname name def welcomemessage(self)print("hello % welcome to the jungleself visitorname abstract method is compulsory to defined in child-class @abstractmethod def scarysound(self)pass object oriented programming