Wie bekomme ich (Sub) Klassenname von einer statischen Methode in Python?

Wenn ich definiere:

class Bar(object): @staticmethod def bar(): # code pass class Foo(Bar): # code pass 

Ist es möglich, dass ein Funktionsaufruf Foo.bar () den Klassennamen Foo ermittelt?

  • Können XML-RPC-Methoden namentlich (als Strings) in Python aufgerufen werden?
  • Aufruf von Klasse von einem externen Modul verursacht NameError, in IDLE funktioniert es gut
  • Übergeben eines Pythonobjekts in ein Casperjs-Skript, das über das Objekt iteriert und ein Ergebnisobjekt zu python zurückführt
  • Unicode Dateiname zu python subprocess.call () [duplicate]
  • Funktionsaufruf mit Import in web2py
  • Verwenden von größer als operator mit subprocess.call
  • Mehrere Anweisungen bei der Erstellung einer einzelnen Anweisung gefunden
  • Python: SyntaxError: Schlüsselwort kann kein Ausdruck sein
  • Das Aufrufen von "del" auf das Ergebnis des Funktionsaufrufs führt zu "SyntaxError: kann den Funktionsaufruf nicht löschen"
  • Warum bekomme ich einen SyntaxError im Python-Interpreter?
  • Wie man eine Anwendung ohne Verwendung einer IDE und ohne Verständnis des Programmflusses debuggt?
  • Falsche Anzahl von Argumenten, wenn eine aufrufende Funktion aus der Klasse in Python
  • 2 Solutions collect form web for “Wie bekomme ich (Sub) Klassenname von einer statischen Methode in Python?”

    Ersetzen Sie die statische Methode durch eine Klassenmethode. Dies wird die Klasse übergeben, wenn es angerufen wird, also kannst du den Klassennamen dazu bekommen.

     class Bar(object): @classmethod def bar(cls): # code print cls.__name__ class Foo(Bar): # code pass >>> Bar.bar() Bar >>> Foo.bar() Foo 

    Wenn Sie die Klasseninformationen finden müssen, ist der passende Weg, um @classmethod zu verwenden.

     class Bar(object): @classmethod def bar(cls): # code print(cls.__name__) class Foo(Bar): # code pass 

    Jetzt hat deine bar Methode einen Verweis auf die Klasse als cls die die eigentliche Klasse des Anrufers ist. Und wie im Code gezeigt, ist cls.__name__ der Name der Klasse, die du suchst.

     >>> Foo.bar() Foo >>> Bar.bar() Bar 
    Python ist die beste Programmiersprache der Welt.