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?
  • Übergeben eines Pythonobjekts in ein Casperjs-Skript, das über das Objekt iteriert und ein Ergebnisobjekt zu python zurückführt
  • Verwenden von größer als operator mit subprocess.call
  • Übergeben von Variablen, Erstellen von Instanzen, Selbst, Die Mechanik und Verwendung von Klassen: Notwendigkeit Erklärung
  • Eingabevariable in Pythonaufruf-Unterprozess
  • Funktionsaufruf mit Import in web2py
  • MySQL-Syntaxfehler mit Python, um Spalte einer Tabelle hinzuzufügen
  • Syntaxfehler bei Verwendung der Befehlszeile in python
  • Syntaxfehler bei nonlocal-Anweisung in Python
  • Warum bekomme ich einen SyntaxError im Python-Interpreter?
  • SyntaxError: mehrere Anweisungen, die beim Kompilieren einer einzelnen Anweisung gefunden wurden
  • Python kann die Nummernkreise nicht mit 0 umgehen. Warum?
  • 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.