Übersicht über die abstrakte Klasse in Python

Abstrakte Klassen sind die Klassen, die deklariert sind, aber keine Implementierungen enthalten. Es kann nur vererbt werden. Abstrakte Klassen dienen als Vorlage für die Unterklassen. Abstrakte Klassen können nicht instanziiert werden und erfordern Unterklassen, um Implementierungen für abstrakte Methoden bereitzustellen. Es benötigt Unterklassen, um Implementierungen der abstrakten Methoden bereitzustellen, die in abstrakten Klassen definiert sind. Abstrakte Klassen enthalten eine oder mehrere abstrakte Methoden. Abstrakte Methoden sind die Methoden, die ohne Implementierung deklariert werden. Wir können das Objekt der abstrakten Klasse nicht direkt erstellen, aber wir können es an die Basisklasse erben und dann das Objekt erstellen. In diesem Thema erfahren Sie mehr über Abstract Class in Python.

Sowohl die abstrakte Klasse als auch die konkrete Klasse können in der abstrakten Klasse enthalten sein. Mithilfe einer abstrakten Klasse können wir eine verallgemeinerte Struktur der Methoden definieren, ohne vollständige Implementierungen jeder Methode bereitzustellen. Abstrakte Methoden, die in der abstrakten Klasse definiert sind, haben im Allgemeinen keinen Body. Es ist jedoch möglich, abstrakte Methoden mit Implementierungen in der abstrakten Klasse zu haben. Wenn eine Unterklasse von einer solchen abstrakten Klasse abgeleitet wird, muss die Implementierung für solche Methoden bereitgestellt werden . Wenn die abgeleitete Klasse keine abstrakte Methode implementiert, wird ein Fehler ausgegeben. Das abstrakte Klassenobjekt kann nicht direkt erstellt werden, aber wenn wir diese abstrakte Klasse verwenden, um einer Basisklasse oder einer untergeordneten Klasse bestimmte Funktionen bereitzustellen, können Sie dies tun, indem Sie das Objekt der Basisklasse erstellen.

Bedeutung abstrakter Klassen

1. Es bietet die Standardfunktionalität der Basisklassen.

2. Es definiert eine gemeinsame API für den Satz von Unterklassen, die nützlich ist, wenn ein Dritter Plugins in einer Anwendung bereitstellt.

3. Hilfreich in großem Code war das Erinnern an viele Klassen ist schwierig.

Syntax

From abc import ABC
Class Educba(ABC):

Um eine Klasse als abstrakte Klasse zu betrachten, muss die Klasse die ABC-Metaklasse vom in Python integrierten abc-Modul erben. Das Modul abc importiert die ABC-Metaklasse.

Abstrakte Methoden in Python

Abstrakte Methoden sind die Methoden, die ohne Implementierung deklariert werden.

Syntax

from abc import ABC, abstract method
Class Educba(ABC):
@abstractmethod
def mymethod(self):
#empty body
pass

Um die abstrakten Methoden in einer abstrakten Klasse zu definieren, muss die Methode mit einem Schlüsselwort namens @abstractmethod decorator dekoriert werden. Der @ abstractmethod-Dekorator muss aus der in Python integrierten Bibliothek namens abc importiert werden.

Wie haben abstrakte Klassen in Python funktioniert?

Python hat standardmäßig keine abstrakten Klassen, aber es hat ein Modul oder eine Bibliothek, die die Basis für die Definition von abstrakten Basisklassen (ABC) bildet, und dieser Modulname heißt ABC. Es markiert die Methode der Basisklasse als abstrakte Basisklasse und erzeugt dann konkrete Klassen als Implementierungen der abstrakten Basis. Eine Methode wird mit Hilfe eines Decorator-Schlüsselworts namens @abstractmethod zu einer abstrakten Methode.

Das ABC-Modul wird zum Erstellen der abstrakten Klassen verwendet. @ Abstractmethod ist der Dekorator, der zum Deklarieren der abstrakten Methode verwendet wird. Das ABC-Modul stellt einen Vertrag zwischen der Basisklasse und der konkreten Klasse her.

Das Modul abc bildet die Grundlage für die Definition von abstrakten Basisklassen (ABC) in Python. Das Collections-Modul enthält einige konkrete Klassen, die von ABC abgeleitet sind und die weiter unterteilt werden können. Abgesehen von all dem enthält das Collections-Modul auch ein ABC, mit dem getestet werden kann, ob eine Klasse oder Instanz eine bestimmte Schnittstelle bereitstellt oder nicht.

Dieses Modul bietet die folgende Klasse:

Klasse abc.ABCMeta

Die Metaklasse wird zum Definieren von abstrakten Basisklassen (ABC) verwendet.

Wir verwenden eine Metaklasse, um eine abstrakte Basisklasse zu erstellen.

from abc import ABCMeta
class C:
__metaclass__ = ABCMeta
MyABC.register(tuple)
assert issubclass(tuple, C)
assert isinstance((), C)

Beispiel

# importing the ABC module
from abc import ABC, abstractmethod
class Shape(ABC):
def common(self):
print("This is a concrete method")
@abstractmethod # decorator
def area(self):
pass
@abstractmethod
def perimeter(self):
pass
class Square(Shape):
def __init__(self, side):
self.__side=side
def area(self):
return self.__side*self.__side
def perimeter(self):
return 4*self.__side
class Rectangle(Shape):
def __init__(self, length, breath):
self.__length=length
self.__breath=breath
def area(self):
return self.__length*self.__breath
def perimeter(self):
return 2*(self.__length+self.__breath)
S1=Square(4)
print(S1.common())
print(S1.area())
print(S1.perimeter())
R1=Rectangle(2, 4)
print(R1.common())
print(R1.area())
print(R1.perimeter())

Erhaltene Ausgabe

Dies ist eine konkrete Methode

16

16

Dies ist eine konkrete Methode

8

12

In dem obigen Beispiel ist die Abstract-Klasse Shape, die eine konkrete Methode namens common und zwei abstrakte Methoden namens area und perimeter enthält. Es gibt zwei untergeordnete Klassen Square und Rectangle, die die abstrakte Klasse Shape erben und die abstrakte Methode implementieren.

Implementierung durch Unterklassen:

import abc
class Shape:
def area(self):
pass
class Square(Shape):
def area(self):
print("Square is a child class")
print( issubclass(Square, Shape))
print( isinstance(Square(), Shape))

Abstrakte Eigenschaften

Abstrakte Klassen enthalten abstrakte Eigenschaften zusammen mit von @abstractproperty definierten abstrakten Methoden.

Wir können jetzt property, property.getter (), property.setter () und property.deleter () mit abstrakten Klassen verwenden.

Syntax

class class_name(ABC):
@property
@abstractmethod
Def method(self):

Dies definiert die schreibgeschützte Eigenschaft.

class Class_name:
__metaclass__ = ABCMeta
def getx(self): …
def setx(self, value): …
x = abstractproperty(getx, setx)

Python 2

class C(ABC):
@abstractproperty
def my_abstract_property(self):

Python 3.3

class C(ABC):
@property
@abstractmethod
def my_abstract_property(self):
import abc
from abc import ABC, abstractmethod
class Shape(ABC):
@abc.abstractproperty
def area(self):
return "Shape class"
class Square(parent):
@property
def area(self):
return "Square class"
try:
s1 =Shape()
print( s1.area)
except for Exception as err:
print (err)
s1 = Square()
print (s1.area)

Ausgabe:

Kann abstrakte Klasse Shape mit abstraktem Methodenbereich nicht instanziieren

Quadratische Klasse

Fazit

Abschließend komme ich zu dem Schluss, dass abstrakte Klassen eine Möglichkeit sind, ein bestimmtes Maß an Codequalität zu gewährleisten, da sie bestimmte Standards durchsetzen und die Menge des von uns geschriebenen doppelten Codes verringern können. Es stellt eine Verbindung zwischen der Basisklasse und der konkreten Klasse her. Es bietet eine einfache Implementierung von Code. Es definiert eine verallgemeinerte Struktur von Methoden ohne deren vollständige Implementierung. Es erleichtert dem Programmierer das Leben, indem es den Hintergrundprozess abstrahiert und ihn nur auf wichtige Punkte konzentriert. Durch das Verständnis der gemeinsamen und einfachen Struktur von Klassen im Code werden Recherche und Verständlichkeit erheblich beschleunigt.

Empfohlene Artikel

Dies ist eine Anleitung für Abstract Class in Python. Hier diskutieren wir, wie abstrakte Klassen in Python funktionieren, mit der Wichtigkeit und den Methoden anhand geeigneter Beispiele. Sie können sich auch die folgenden Artikel ansehen, um mehr zu erfahren -

  1. Python-Dateivorgänge
  2. Kapselung in Python
  3. Schleifen in Python
  4. Konstruktor in Python
  5. Python-Sets
  6. Einführung in Abstract Class in PHP