本问题已经有最佳答案,请猛点这里访问。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class MyClass: def __init__(self, i): self.i = i def get(self): func_name = 'function' + self.i self.func_name() # <-- this does NOT work. def function1(self): //do something def function2(self): //do something |
我得到的错误是:TypeError: 'str'对象不可调用
有人能帮忙吗?我试过很多排列组合,但都没有成功!(注:"自我。函数名'也不工作)
1 2 3 4 5 6 | def get(self): def func_not_found(): # just in case we dont have the function print 'No Function '+self.i+' Found!' func_name = 'function' + self.i func = getattr(self,func_name,func_not_found) func() # <-- this should work! |
两件事:
在第8行use中,
func_name = 'function' + str(self.i)
定义一个字符串到函数的映射为,
1 2 3 | self.func_options = {'function1': self.function1, 'function2': self.function2 } |
所以它应该是这样的:
MyClass类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | def __init__(self, i): self.i = i self.func_options = {'function1': self.function1, 'function2': self.function2 } def get(self): func_name = 'function' + str(self.i) func = self.func_options[func_name] func() # <-- this does NOT work. def function1(self): //do something def function2(self): //do something |