Créer une classe abstraite en Python

Najwa Riyaz 30 janvier 2023
  1. Python 3.4+ - Créer une classe abstraite en Python en héritant du module ABC
  2. Python 3.0+ - Créer une classe abstraite en Python en héritant du module ABCMeta
  3. Méthode pour vérifier si une classe est abstraite ou non en Python
Créer une classe abstraite 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.

  1. Importez le module ABC (classes de base abstraites).
from abc import ABC, abstractmethod
  1. 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.

  1. Importez le module ABCMeta (classes de base abstraites).
from abc import ABCMeta, abstractmethod
  1. Déclarez la méthode abstraite à l’aide du décorateur @abstractmethod et mentionnez metaclass=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

Article connexe - Python Class