Gibt es eine Möglichkeit, alle Überschreibungsfunktionen einer Unterklasse in Python abzurufen?
Beispiel:
class A:
def a1(self):
pass
def a2(self):
pass
class B(A):
def a2(self):
pass
def b1(self):
pass
Hier möchte ich eine Liste ["a2"]
für ein Klassenobjekt B
(oder für das Klassenobjekt selbst) erhalten, da die Klasse B
nur eine einzige Methode überschreibt, nämlich a2
.
python
reflection
overriding
subclass
Andreas Schörgenhumer
quelle
quelle
vars
war das, was mir fehlte. Vielen Dank für die (unglaublich) schnelle Antwort!parent_attrs
in einer Zeile, wenn Sie wollen:parent_attrs = {a for b in cls.__bases__ for a in dir(b)}
Sie können das
__mro__
Tupel verwenden, das die Reihenfolge der Methodenauflösung enthält.Für Ihr Beispiel:
Sie können dieses Tupel also durchlaufen und prüfen, ob sich eine
B
Methode auch in einer der anderen Klassen befindet.quelle
__init__, __eq__, ....... etc
quelle
A
undB
können nicht geändert werden. OP möchte wissen, welcheB
Methoden eine der Methoden überschreibenA
.