Quiero ser capaz de crear un decorador de python que "registre" automáticamente los métodos de clase en un repositorio global (con algunas propiedades).Métodos de autoregistro de clase utilizando el decorador
código Ejemplo:
class my_class(object):
@register(prop1,prop2)
def my_method(arg1,arg2):
# method code here...
@register(prop3,prop4)
def my_other_method(arg1,arg2):
# method code here...
Quiero que cuando se realiza la carga, en algún lugar habrá un diccionario que contiene:
{ "my_class.my_method" : (prop1, prop2)
"my_class.my_other_method" : (prop3, prop4) }
Es esto posible?
+1 este es el camino a seguir (cuando realmente necesita algo como esto) –
¿Qué pasa si tiene una subclase, OurClass (MyClass) - y desea hacer lo mismo? ¿Cómo se puede obtener __metaclass__ para atravesar los atributos de base y de niño? – jMyles
@jMyles, los métodos de la clase principal ya están en el registro; ¿Quieres que aparezcan nuevamente como métodos en la clase infantil?Tienes las bases tuplas para la clase infantil; puede iterar sobre cualquiera o todos los diccionarios de clase de las clases principales/base, así como los atributos de la nueva clase secundaria, al realizar el registro de la clase secundaria (si eso es lo que quiere decir). –