5
Chciałbym dodać dynamicznie do metody class
... nazwa funkcji również zostanie przekazana dynamicznie.Dodaj metodę do klasy dynamicznie z dekoratorem
Jak mogę to zrobić? Próbowałem w ten sposób
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
ale jeśli mam zrobić:
print(aClass.__dict__)
mam
'setter': <bound method onInstance.flam of <__main__.onInstance object at 0x522270>>
zamiast var
: .....
mam tej klasy :
class D:
def __init__(self, data):
self.data = data
self.dimension = len(self.data)
ja nazwałbym:
D.name()
i mieć z powrotem self.dimension
ale nie wiem name
z góry
Pokaż przykład kodu, które mają nadzieję na wykorzystanie dołączyć metodę do klasy. Nie mam pojęcia, jak możesz mieć metodę, którą chcesz dołączyć, ale nie masz dla niej żadnej nazwy. Nie mam też pojęcia, w jaki sposób można oczekiwać, że ta metoda będzie miała jakiś sens dołączenia do klasy, jeśli klasa nie została zaprojektowana z użyciem tej metody. –
zaktualizował opis – fege