Erstellen Sie eine abstrakte Klasse in Python

Najwa Riyaz 30 Januar 2023
  1. Python 3.4+ - Erstellen Sie eine abstrakte Klasse in Python, indem Sie vom ABC-Modul erben
  2. Python 3.0+ - Erstellen Sie eine abstrakte Klasse in Python, indem Sie vom Modul ABCMeta erben
  3. Methode zum Überprüfen, ob eine Klasse in Python abstrakt ist oder nicht
Erstellen Sie eine abstrakte Klasse in Python

Eine abstrakte Klasse ist eine eingeschränkte Klasse, da sie nicht instanziiert werden kann - Sie können sie nicht zum Erstellen von Objekten verwenden. Es kann nur von einer anderen Klasse geerbt werden.

Eine abstrakte Klasse zielt darauf ab, eine gemeinsame Funktion/ein gemeinsames Verhalten zu definieren, das mehrere Unterklassen erben können, ohne die gesamte abstrakte Klasse implementieren zu müssen.

In Python können wir basierend auf der Python-Version eine abstrakte klassenbasierte auf unterschiedliche Weise erstellen.

Python 3.4+ - Erstellen Sie eine abstrakte Klasse in Python, indem Sie vom ABC-Modul erben

In Python 3.4, um eine abstrakte Klasse zu erstellen.

  1. Importieren Sie das Modul ABC (abstrakte Basisklassen).
from abc import ABC, abstractmethod
  1. Deklarieren Sie die abstrakte Methode mit dem Dekorator @abstractmethod.
from abc import ABC, abstractmethod


class ExampleAbstractClass(ABC):
    @abstractmethod
    def abstractmethod(self):
        pass

Unten sehen Sie ein Beispiel, bei dem die abstrakte Klasse Vehicle zwei Unterklassen hat, nämlich Car und Bike. Die Klassen Car und Bike haben ihre einzigartige Umsetzung.

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()

Ausgabe:

A Car has 4 wheels
A Bike has 2 wheels

Python 3.0+ - Erstellen Sie eine abstrakte Klasse in Python, indem Sie vom Modul ABCMeta erben

In Python 3.0+, um eine abstrakte Klasse zu erstellen.

  1. Importieren Sie das Modul ABCMeta (abstrakte Basisklassen).
from abc import ABCMeta, abstractmethod
  1. Deklarieren Sie die abstrakte Methode mit dem Dekorator @abstractmethod und erwähnen Sie metaclass=ABCMeta.
from abc import ABCMeta, abstractmethod


class Example2AbstractClass(metaclass=ABCMeta):
    @abstractmethod
    def abstractmethod2(self):
        pass

Unten ist ein Beispiel.

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()

Ausgabe:

A Car has 4 wheels
A Bike has 2 wheels

Methode zum Überprüfen, ob eine Klasse in Python abstrakt ist oder nicht

Um zu überprüfen, ob die erstellte Klasse tatsächlich eine abstrakte Klasse ist oder nicht, sollten wir die Klasse instanziieren. Eine abstrakte Klasse lässt keine Instanziierung zu und löst einen Fehler aus.

Zum Beispiel, wenn wir eine Zusammenfassung wie unten instanziieren.

x = ExampleAbstractClass()

Dann wird ein Fehler angezeigt.

Can't instantiate abstract class ExampleAbstractClass with abstract methods abstractmethod

Verwandter Artikel - Python Class