Erstellen Sie eine abstrakte Klasse in Python
-
Python 3.4+ - Erstellen Sie eine abstrakte Klasse in Python, indem Sie vom
ABC
-Modul erben -
Python 3.0+ - Erstellen Sie eine abstrakte Klasse in Python, indem Sie vom Modul
ABCMeta
erben - Methode zum Überprüfen, ob eine Klasse in Python abstrakt ist oder nicht
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.
- Importieren Sie das Modul
ABC
(abstrakte Basisklassen).
from abc import ABC, abstractmethod
- 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.
- Importieren Sie das Modul
ABCMeta
(abstrakte Basisklassen).
from abc import ABCMeta, abstractmethod
- Deklarieren Sie die abstrakte Methode mit dem Dekorator
@abstractmethod
und erwähnen Siemetaclass=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