2010-08-29 13 views

risposta

27

Sostituire il metodo statico con un metodo di classe. Questo verrà passato alla classe quando viene chiamato, in modo da poter ottenere il nome della classe da quello.

class Bar(object): 

    @classmethod 
    def bar(cls): 
     # code 
     print cls.__name__ 

class Foo(Bar): 
    # code 
    pass 

>>> Bar.bar() 
Bar 

>>> Foo.bar() 
Foo 
+1

Grazie mille Dave! –

+2

Questo non risponde alla domanda. La domanda era come farlo con un metodo statico. – sebix

2

Se hai bisogno di trovare le informazioni di classe, il modo appropriato è quello di utilizzare @classmethod.

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

class Foo(Bar): 
    # code 
    pass 

Ora il metodo di bar ha un riferimento alla classe come cls che è la classe reale del chiamante. E come mostrato nel codice, cls.__name__ è il nome della classe che stai cercando.

>>> Foo.bar() 
Foo 
>>> Bar.bar() 
Bar 
+0

E 'stata già risposto, ma grazie comunque! –

Problemi correlati