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?

  • Python, rufe eine Klassenfunktion aus einer anderen Klasse an
  • Unicode Dateiname zu python subprocess.call () [duplicate]
  • Verwenden von größer als operator mit subprocess.call
  • Aufruf von Klasse von einem externen Modul verursacht NameError, in IDLE funktioniert es gut
  • Funktionsaufruf mit Import in web2py
  • Rufen Sie eine Python-Datei in einem SML-Programm an?
  • Das Aufrufen von "del" auf das Ergebnis des Funktionsaufrufs führt zu "SyntaxError: kann den Funktionsaufruf nicht löschen"
  • Falsche Anzahl von Argumenten, wenn eine aufrufende Funktion aus der Klasse in Python
  • Syntaxfehler bei nonlocal-Anweisung in Python
  • Mehrere Anweisungen bei der Erstellung einer einzelnen Anweisung gefunden
  • Warum bekomme ich einen SyntaxError im Python-Interpreter?
  • Python - os.rename () - OSError: [WinError 123]
  • 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.