Quick Python: Abstract Classes

Brandon Rozek

January 26, 2020

You can create an abstract class in Python by inheriting Abstract Base Class (ABC) and declaring relevant methods abstract.

First import the following from the standard library,

from abc import ABC, abstractmethod

Then create an abstract class, making sure to add the decorator @abstractmethod to the constructor. This prevents the user from instantiating the class.

class Animal(ABC):
    @abstractmethod
    def __init__(self, name):
        self.name = name
    @abstractmethod
    def is_bipedal(self):
        pass
    def speak(self):
        return "Hello my name is " + self.name + " and I am a " + type(self).__name__

In the example above:

Now let’s look at a class that inherits Animal.

class Dog(Animal):
    def __init__(self, name, owner):
        super().__init__(name) # Calls Animal constructor
        self.owner = owner
    def is_bipedal(self):
        return False