with tutorial the para latest framework español desde cero applications python reflection function-call static-methods

tutorial - ¿Cómo obtener el nombre de(sub) clase de un método estático en Python?



the django project (2)

Si yo defino:

class Bar(object): @staticmethod def bar(): # code pass class Foo(Bar): # code pass

¿Es posible que una función llame a Foo.bar () para determinar el nombre de clase Foo?


Reemplace el método estático con un método de clase. Esto se pasará a la clase cuando se llame, para que pueda obtener el nombre de la clase a partir de eso.

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


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

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

Ahora su método de 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