Abstrakte Klassen in Python: Ein Leitfaden für Anfänger
Eine abstrakte Klasse ist eine Blaupause für verwandte Klassen. Es kann nicht instanziiert werden, sondern kann nur durch Vererbung aufgerufen werden. Eine Unterklasse, die eine abstrakte Klasse erbt, ist erforderlich, um ihre abstrakten Methoden zu implementieren. Andernfalls meldet der Compiler einen Fehler.
Abstrakte Methoden sind Methoden ohne Implementierung. Eine abstrakte Klasse kann abstrakte Methoden oder konkrete (normale) Methoden haben.
Python unterstützt abstrakte Methoden nicht direkt, aber Sie können über das Modul abc (abstract base class) darauf zugreifen.
Verwenden des abc-Moduls in Python
Um eine abstrakte Klasse in Python zu definieren, müssen Sie das Modul abc importieren .
Siehe das Beispiel unten:
from abc import ABC
class AbstractClassName(ABC):
pass
Beachten Sie das Schlüsselwort pass . Dieses Schlüsselwort wird verwendet, um für leeren Code zu stehen. Wenn Sie es weglassen, wird ein Kompilierungsfehler ausgegeben.
Klassendefinitionen, Methodendefinitionen, Schleifen und if- Anweisungen erwarten Codeimplementierungen. Wenn Sie sie weglassen, erhalten Sie einen Kompilierungsfehler. Um dies zu vermeiden, verwenden Sie pass, um den leeren Code zu ersetzen.
Um eine abstrakte Methode in Python zu definieren, verwenden Sie den @abstractmethod- Dekorator:
from abc import ABC, abstractmethod
class AbstractClassName(ABC):
@abstractmethod
def abstractMethod(self):
pass
An dieser Stelle sollte erwähnt werden, dass abstrakte Methoden in Python im Gegensatz zu Java eine Implementierung haben können. Auf diese Implementierung kann in der überschreibenden Methode mit der Methode super() zugegriffen werden.
import abc
class AbstractClass(ABC):
def __init__(self, value):
self.value = value
super().__init__()
@abc.abstractmethod
def some_action(self):
print("This is the parent implementation.")
class MySubclass(AbstractClassExample):
def some_action(self):
super().some_action()
print("This is the subclass implementation. ")
x = MySubclass()
x.some_action()
Interessant ist, dass Sie einen Konstruktor in einer abstrakten Klasse definieren können.
In Zeile 9 können Sie beobachten, dass @abc.abstractmethod als abstrakter Methodendekorator verwendet wurde. Dies ist eine andere Möglichkeit als das vorherige Formular. Beachten Sie auch, dass Zeile 1 kürzer ist ( import abc ) als der frühere Import von Zeile 1, den Sie verwendet haben.
Es ist alles eine Frage der Wahl. Viele finden die zweite Methode jedoch kürzer.
Ausnahmebehandlung in Python
Beachten Sie, dass es im obigen Codebeispiel keine Möglichkeit gibt, Fehler zu erfassen. Fehler treten häufiger auf, und eine zuverlässige Möglichkeit, sie zu finden, kann ein entscheidender Faktor sein.
Diese Ereignisse, die den normalen Programmablauf stören, werden als "Ausnahmen" bezeichnet, und ihre Verwaltung wird als "Ausnahmebehandlung" bezeichnet. Als nächstes auf Ihrer Python-Leseliste sollte die Ausnahmebehandlung sein.