Gibt es eine Möglichkeit, eine geerbte Methode in Python zu identifizieren?

8

Ich möchte geerbte Methoden unabhängig von überladenen oder neu definierten Methoden angeben. Ist das mit Python möglich?

Beispiel:

%Vor%

Gewünschte Funktionalität:

%Vor%

Gibt es eine "magische Methode" wie im Beispiel oder eine andere Möglichkeit, diese Arten von Methodenimplementierungen zu unterscheiden?

    
Danilo Bargen 13.10.2011, 09:18
quelle

5 Antworten

12

Ich bin mir nicht sicher, ob das eine gute Idee ist, aber Sie können es wahrscheinlich mit hasattr und __dict__ machen.

%Vor%     
madjar 13.10.2011, 09:30
quelle
7

Wenn Sie den Vorfahren kennen, können Sie einfach Folgendes testen:

%Vor%

Um eine Liste aller Basisklassen zu finden, klicken Sie hier: List alle Basisklassen in einer Hierarchie der gegebenen Klasse?

Ich werde auch darauf hinweisen, dass Ihr Klassendesign wahrscheinlich falsch ist, wenn Sie das brauchen. Sie sollten sich in OOP nicht um solche Dinge kümmern (es sei denn, Sie erstellen einen Objektinspektor oder Ähnliches).

    
hamstergene 13.10.2011 09:26
quelle
6

Ein allgemeiner Weg wird (Python 2. *) sein:

%Vor%     
mouad 13.10.2011 09:32
quelle
0

Erweiterung der Antwort von Hamstergene; Eine Klasse speichert ihre Basisklassen in der Klassenvariablen __bases__ .

Also:

%Vor%     
tylerl 13.10.2011 09:32
quelle
0

Für Klassen im neuen Stil haben Sie eine Methode mro() , die die Liste der Reihenfolge der Methodenauflösung zurückgibt. [0] ist die Klasse selbst.

Sie könnten also

machen %Vor%

So eggs ist neu definiert.

%Vor%

Also ham wird vererbt.

Mit diesen können Sie Ihre eigenen Heuristiken erstellen.

    
glglgl 13.10.2011 09:38
quelle

Tags und Links