Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Python

Python-Vererbung

Python-Vererbung

Vererbung ermöglicht es uns, eine Klasse zu definieren, die die gesamte Funktionalität von einer übergeordneten Klasse übernimmt und es uns ermöglicht, weitere hinzuzufügen. In diesem Tutorial lernen Sie, Vererbung in Python zu verwenden.

Video:Python-Vererbung

Vererbung in Python

Vererbung ist ein mächtiges Feature in der objektorientierten Programmierung.

Es bezieht sich auf die Definition einer neuen Klasse mit wenig oder keiner Änderung an einer bestehenden Klasse. Die neue Klasse heißt abgeleitete (oder untergeordnete) Klasse und diejenige, von der sie erbt, wird als Basis- (oder übergeordnete) Klasse bezeichnet .


Python-Vererbungssyntax

class BaseClass:
  Body of base class
class DerivedClass(BaseClass):
  Body of derived class

Die abgeleitete Klasse erbt Features von der Basisklasse, wobei ihr neue Features hinzugefügt werden können. Dies führt zur Wiederverwendbarkeit des Codes.


Beispiel für Vererbung in Python

Um die Verwendung der Vererbung zu demonstrieren, nehmen wir ein Beispiel.

Ein Polygon ist eine geschlossene Figur mit 3 oder mehr Seiten. Angenommen, wir haben eine Klasse namens Polygon wie folgt definiert.

class Polygon:
    def __init__(self, no_of_sides):
        self.n = no_of_sides
        self.sides = [0 for i in range(no_of_sides)]

    def inputSides(self):
        self.sides = [float(input("Enter side "+str(i+1)+" : ")) for i in range(self.n)]

    def dispSides(self):
        for i in range(self.n):
            print("Side",i+1,"is",self.sides[i])

Diese Klasse hat Datenattribute, um die Anzahl der Seiten n zu speichern und Größe jeder Seite als Liste namens sides .

Die inputSides() Methode nimmt die Größe jeder Seite und dispSides() auf zeigt diese Seitenlängen an.

Ein Dreieck ist ein Vieleck mit 3 Seiten. Wir können also eine Klasse namens Triangle erstellen die von Polygon erbt . Dies macht alle Attribute von Polygon Klasse, die dem Triangle zur Verfügung steht Klasse.

Wir müssen sie nicht erneut definieren (Wiederverwendbarkeit des Codes). Dreieck kann wie folgt definiert werden.

class Triangle(Polygon):
    def __init__(self):
        Polygon.__init__(self,3)

    def findArea(self):
        a, b, c = self.sides
        # calculate the semi-perimeter
        s = (a + b + c) / 2
        area = (s*(s-a)*(s-b)*(s-c)) ** 0.5
        print('The area of the triangle is %0.2f' %area)

Allerdings Klasse Triangle hat eine neue Methode findArea() um die Fläche des Dreiecks zu finden und auszudrucken. Hier ist ein Beispiellauf.

>>> t = Triangle()

>>> t.inputSides()
Enter side 1 : 3
Enter side 2 : 5
Enter side 3 : 4

>>> t.dispSides()
Side 1 is 3.0
Side 2 is 5.0
Side 3 is 4.0

>>> t.findArea()
The area of the triangle is 6.00

Wir können das sehen, obwohl wir keine Methoden wie inputSides() definiert haben oder dispSides() für Klasse Triangle separat konnten wir sie verwenden.

Wenn ein Attribut nicht in der Klasse selbst gefunden wird, wird die Suche zur Basisklasse fortgesetzt. Dies wiederholt sich rekursiv, wenn die Basisklasse selbst von anderen Klassen abgeleitet ist.


Methodenüberschreibung in Python

Beachten Sie im obigen Beispiel, dass __init__() Methode wurde in beiden Klassen definiert, Triangle sowie Polygon . In diesem Fall überschreibt die Methode in der abgeleiteten Klasse die in der Basisklasse. Das heißt, __init__() im Dreieck erhält Vorrang vor __init__ im Polygon .

Im Allgemeinen neigen wir beim Überschreiben einer Basismethode dazu, die Definition zu erweitern, anstatt sie einfach zu ersetzen. Das Gleiche geschieht durch Aufrufen der Methode in der Basisklasse von der Methode in der abgeleiteten Klasse (Aufruf von Polygon.__init__() ab __init__() in Triangle ).

Eine bessere Option wäre die Verwendung der eingebauten Funktion super() . Also super().__init__(3) entspricht Polygon.__init__(self,3) und wird bevorzugt. Um mehr über super() zu erfahren Funktion in Python finden Sie unter Python super() function.

Zwei eingebaute Funktionen isinstance() und issubclass() werden verwendet, um Vererbungen zu prüfen.

Die Funktion isinstance() gibt True zurück wenn das Objekt eine Instanz der Klasse oder anderer davon abgeleiteter Klassen ist. Jede einzelne Klasse in Python erbt von der Basisklasse object .

>>> isinstance(t,Triangle)
True

>>> isinstance(t,Polygon)
True

>>> isinstance(t,int)
False

>>> isinstance(t,object)
True

Ebenso issubclass() wird verwendet, um auf Klassenvererbung zu prüfen.

>>> issubclass(Polygon,Triangle)
False

>>> issubclass(Triangle,Polygon)
True

>>> issubclass(bool,int)
True

Python

  1. Python-Datentypen
  2. Python-Operatoren
  3. Python-pass-Anweisung
  4. Python-Wörterbuch
  5. Benutzerdefinierte Python-Ausnahmen
  6. Python objektorientierte Programmierung
  7. Überladen von Python-Operatoren
  8. Python @property decorator
  9. type() und isinstance() in Python mit Beispielen
  10. C# - Vererbung