Python 从类内的字符串调用方法?

Python 从类内的字符串调用方法?,python,string,methods,getattr,Python,String,Methods,Getattr,我正在尝试使用字符串值调用functions。这是我的问题的一个简单例子。如何正确调用方法(行)?我尝试了不同的解决方案,只通过@staticmethod获得了成功,但这不是我想要的 class A(): def prime(self, key): line = 'Good' method = getattr(A, key) method(line) def add1(self, string): print s

我正在尝试使用字符串值调用functions。这是我的问题的一个简单例子。如何正确调用
方法(行)
?我尝试了不同的解决方案,只通过
@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()

您需要将
self
传递到
getattr
,而不是传递类名:

method = getattr(self, key)
method(line)

此外,如果这是Python 2,在大多数情况下,您应该从
对象继承,以使用:


您需要将
self
传递到
getattr
,而不是传递类名:

method = getattr(self, key)
method(line)

此外,如果这是Python 2,在大多数情况下,您应该从
对象继承,以使用:

使用:

使用:


为什么你希望它是一个字符串,而你可以正常调用它,因为这是我的问题的一个简单的例子。你需要传递一个字符串而不是方法本身的引用吗?test.prime(A.add1),然后def prime(self,method):method(self,“Good”)`是的,因为用户可以访问参数,并且更容易将输入作为简单字符串。我希望,现在更清楚了,当你可以正常调用它时,为什么你希望它是一个字符串,因为这是我问题的一个简单例子。你需要传递一个字符串而不是对方法本身的引用吗?test.prime(A.add1),然后def prime(self,method):method(self,“Good”)`是的,因为用户可以访问参数,并且更容易将输入作为简单字符串。我希望,现在更多了clear@Gatto不客气:-)。如果这个答案解决了你的问题,考虑接受它。“加托不客气:-”。如果这个答案解决了你的问题,考虑接受它。
def prime(self, key):
    operator.methodcaller(key, "Good")(self)