Wie funktioniert super() in Python mit Mehrfachvererbung?

In Python wird super() verwendet, um eine Methode aus einer Elternklasse aufzurufen. Bei Verwendung mit Mehrfachvererbung ist es wichtig, die Elternklasse anzugeben, von der die Methode aufgerufen werden soll. Dies kann durch Übergabe der Elternklasse als Argument an super() erreicht werden. Beispiel:

class Parent1:
    def method(self):
        print("Parent1 Methode")

class Parent2:
    def method(self):
        print("Parent2 Methode")

class Child(Parent1, Parent2):
    def method(self):
        super(Parent1, self).method()
        super(Parent2, self).method()

c = Child()
c.method()

Das gibt folgendes aus:

Parent1 Methode
Parent2 Methode

Es ruft die Methode von Parent1 mit super(Parent1, self).method() auf und die Methode von Parent2 mit super(Parent2, self).method().

In der Python-Version 3.x, wenn Sie kein Argument beim Aufruf von super() übergeben, wird es automatisch die aktuelle Klasse und ihre Elternklasse übergeben. Es sucht dann die Methode in der Elternklasse und wenn sie nicht gefunden wird, sucht es in der nächsten Elternklasse usw.