Итак, у меня есть класс с методом, который принимает строку.Примерно так:
class A():
def func(self, name):
# do some stuff with it
У меня есть конечное число возможных значений, [val1
, val2
, val2
], например, Все строки.Я хочу использовать их так:
a = A()
a.val1() # actually a.func(val1)
Я пытался объединить декораторы и setattr
:
class A():
def func(self, val):
# do some stuff with it
def register(self, val):
def wrapper(self):
self.func(val)
setattr(self, val, wrapper)
Так что я могу перебирать все возможные значения во время выполнения:
a = A()
for val in vals:
a.register(val)
И это имеет нулевой эффект.Обычно setattr
добавляет новый атрибут со значением None
, но в этом случае ничего не происходит.Может кто-нибудь объяснить, почему это так и что я могу сделать?