【发布时间】:2019-09-05 07:48:29
【问题描述】:
我正在使用一些变量 (my_name) 在类 (A) 中动态添加函数。但是当我在类(A)中调用函数时,我得到了正确的函数(正确的函数名称),但带有来自最后一个函数的变量。如何在函数中动态设置变量或如何解决这样的问题?
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)
【问题讨论】: