2010-08-29 8 views

Respuesta

27

Reemplace el método estático con classmethod. Esto se pasará a la clase cuando se llame, por lo que puede obtener el nombre de clase de eso.

class Bar(object): 

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

class Foo(Bar): 
    # code 
    pass 

>>> Bar.bar() 
Bar 

>>> Foo.bar() 
Foo 
+1

Muchas gracias Dave! –

+2

Esto no responde la pregunta. La pregunta era cómo hacerlo con un método estático. – sebix

2

Si usted necesita para encontrar la información de clase, la forma adecuada es utilizar @classmethod.

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

class Foo(Bar): 
    # code 
    pass 

Ahora su método bar tiene una referencia a la clase como cls que es la clase real de la persona que llama. Y como se muestra en el código, cls.__name__ es el nombre de la clase que está buscando.

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

Ya fue respondida, ¡pero gracias de todos modos! –

Cuestiones relacionadas