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-Klasse Design (statische Methode vs Methode)
  • 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.