我正在尝试使用字符串值调用fucntions。这是我的问题的一个简单例子。如何正确拨打method(line)
?我尝试了不同的解决方案,只有@staticmethod
取得了成功,但这不是我想要的。
class A():
def prime(self, key):
line = 'Good'
method = getattr(A, key)
method(line)
def add1(self, string):
print string + ' day!'
def add2(self, string):
print string + ' evening!'
def main():
test = A()
test.prime('add1')
test.prime('add2')
if __name__ == "__main__":
main()
答案 0 :(得分:2)
您需要将self
传递给getattr
而不是类名:
method = getattr(self, key)
method(line)
此外,如果这是Python 2,则在大多数情况下应继承object
,以使用new-style classes:
class A(object):
答案 1 :(得分:1)
def prime(self, key):
operator.methodcaller(key, "Good")(self)