从类里面的字符串调用方法?

时间:2018-03-02 13:59:45

标签: python string methods getattr

我正在尝试使用字符串值调用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()

2 个答案:

答案 0 :(得分:2)

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

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

此外,如果这是Python 2,则在大多数情况下应继承object,以使用new-style classes

class A(object):

答案 1 :(得分:1)

使用operator.methodcaller

def prime(self, key):
    operator.methodcaller(key, "Good")(self)