[New] Python Abstract Classes

This commit is contained in:
Brandon Rozek 2020-01-26 18:58:49 -05:00
parent d9e8f4aab9
commit b65a0bad03

View file

@ -0,0 +1,46 @@
---
title: "Quick Python: Abstract Classes"
date: 2020-01-26T18:40:03-05:00
draft: false
images: []
---
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,
```python
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.
```python
class Animal:
@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:
- A constructor is made, however, the class Animal cannot be instantiated. Do note that child classes can call the constructor.
- `is_bipedal` is an abstract method that needs to be defined in child classes. `pass` indicates that it is not implemented.
- `speak` is a normal method that will be inherited by child classes.
Now let's look at a class that inherits `Animal`.
```python
class Dog(Animal):
def __init__(self, name, owner):
super().__init__(name) # Calls Animal constructor
self.owner = owner
def is_bipedal(self):
return False
```