Créer une classe abstraite en Python
-
Python 3.4+ - Créer une classe abstraite en Python en héritant du module
ABC
-
Python 3.0+ - Créer une classe abstraite en Python en héritant du module
ABCMeta
- Méthode pour vérifier si une classe est abstraite ou non en Python
Une classe abstraite est une classe restreinte car elle ne peut pas être instanciée - vous ne pouvez pas l’utiliser pour créer des objets. Il ne peut être hérité que d’une autre classe.
Une classe abstraite vise à définir une fonction/un comportement commun dont plusieurs sous-classes peuvent hériter sans avoir à implémenter l’intégralité de la classe abstraite.
En Python, nous pouvons créer une classe abstraite basée de différentes manières en fonction de la version Python.
Python 3.4+ - Créer une classe abstraite en Python en héritant du module ABC
En Python 3.4, pour créer une classe abstraite.
- Importez le module
ABC
(classes de base abstraites).
from abc import ABC, abstractmethod
- Déclarez la méthode abstraite à l’aide du décorateur
@abstractmethod
.
from abc import ABC, abstractmethod
class ExampleAbstractClass(ABC):
@abstractmethod
def abstractmethod(self):
pass
Vous trouverez ci-dessous un exemple où la classe abstraite Vehicle
a deux sous-classes, à savoir Car
et Bike
. Les classes Car
et Bike
ont leur implémentation unique.
from abc import ABC, abstractmethod
class Vehicle(ABC):
@abstractmethod
def numberofwheels(self):
pass
class Car(Vehicle):
def numberofwheels(self):
print("A Car has 4 wheels")
class Bike(Vehicle):
def numberofwheels(self):
print("A Bike has 2 wheels")
C = Car()
C.numberofwheels()
B = Bike()
B.numberofwheels()
Production:
A Car has 4 wheels
A Bike has 2 wheels
Python 3.0+ - Créer une classe abstraite en Python en héritant du module ABCMeta
En Python 3.0+, pour créer une classe abstraite.
- Importez le module
ABCMeta
(classes de base abstraites).
from abc import ABCMeta, abstractmethod
- Déclarez la méthode abstraite à l’aide du décorateur
@abstractmethod
et mentionnezmetaclass=ABCMeta
.
from abc import ABCMeta, abstractmethod
class Example2AbstractClass(metaclass=ABCMeta):
@abstractmethod
def abstractmethod2(self):
pass
Ci-dessous un exemple.
from abc import ABCMeta, abstractmethod
class Vehicle(metaclass=ABCMeta):
@abstractmethod
def numberofwheels(self):
pass
class Car(Vehicle):
def numberofwheels(self):
print("A Car has 4 wheels")
class Bike(Vehicle):
def numberofwheels(self):
print("A Bike has 2 wheels")
C = Car()
C.numberofwheels()
B = Bike()
B.numberofwheels()
Production:
A Car has 4 wheels
A Bike has 2 wheels
Méthode pour vérifier si une classe est abstraite ou non en Python
Pour vérifier si la classe créée est bien une classe abstraite ou non, nous devons instancier la classe. Une classe abstraite n’autorisera pas l’instanciation et renverra une erreur.
Par exemple, si nous instancions un résumé comme ci-dessous.
x = ExampleAbstractClass()
Ensuite, une erreur s’affiche.
Can't instantiate abstract class ExampleAbstractClass with abstract methods abstractmethod