I'm dynamically adding functions in class (A) with some variables (my_name). But when I call functions in class (A) I get correct function (correct name of function) but with variables from last function. How to dynamically set variables in function or how to solve problem like this?
class A:
pass
function_name_list = ['first/function', 'second/function', 'third/function']
def add_method(cls, fnctname):
def decorator(func):
@wraps(func)
def wrapper(self, *args, **kwargs):
return func(*args, **kwargs)
setattr(cls, fnctname, wrapper)
return func
return decorator
def create_functions():
for x in function_name_list:
name = x.replace('/', '')
@add_method(A, name)
def foo(value):
my_name = copy.deepcopy(name)
with open('./file' + str(my_name) + '.txt', 'a') as f:
f.write(str(time.time()) + ',' + my_name + ',' + str(value) + "\n")
print('Call: ', my_name)
a = A()
create_functions()
for x in function_name_list:
name = x.replace('/', '')
getattr(a, '%s' % name)(1)