5
Tendría que agregar el método a un class
dinámicamente ... el nombre de la función también se pasará dinámicamente.agregue el método a una clase dinámicamente con el decorador
¿Cómo puedo hacer? He intentado de esta manera
def decor(*var):
def onDecorator(aClass):
class onInstance:
def __init__(self,*args,**kargs):
setter=var
aClass.setter = self.flam
self.wrapped = aClass(*args,**kargs)
def __getattr__(self,attr):
return getattr(self.wrapped,attr)
def __setattr__(self,attr,value):
if attr == 'wrapped':
self.__dict__[attr]=value
else:
setattr(self.wrapped,attr,value)
def flam(self,*args):
self.__setattr__('dimension',len(args[0]))
return onInstance
return onDecorator
pero si lo hago:
print(aClass.__dict__)
tengo
'setter': <bound method onInstance.flam of <__main__.onInstance object at 0x522270>>
en lugar de var
: .....
tengo esta clase :
class D:
def __init__(self, data):
self.data = data
self.dimension = len(self.data)
yo llamaría:
D.name()
y tienen vuelta self.dimension
pero yo no sé de antemano name
muestran un ejemplo del código que se espera utilizar para fijar el método a la clase. No tengo idea de cómo podrías tener un método que quieras adjuntar, pero no tener ningún tipo de nombre para él. Tampoco tengo idea de cómo esperas que el método tenga algún sentido para ser adjuntado a la clase, si la clase no fue diseñada con ese método en primer lugar. –
actualizó la descripción – fege