将方法名称作为参数传递给类方法时出错

时间:2016-04-16 16:21:17

标签: python

我正在尝试这样做:

class Foo(object):
    def method1(self):
        print "method1"
    def method2(self):
        print "method2"        

class Fo1(object):
    def __init__(self):
        self.a = Foo()
    def classMethod(self, selection):
        self.a.selection()

A = Fo1()
A.classified('method2')

我收到了这个错误:

--> AttributeError: 'Fo1' object has no attribute 'selection'

我不想使用它(在我看来,更多编码):

 def classified(self,selection):
    if selection == "method1": self.a.method1()
    elif selection == "method2": self.a.method2()

我应该如何对方法进行编码,以便将方法名称作为参数传递? 谢谢!

1 个答案:

答案 0 :(得分:4)

您可以使用getattr来执行此操作,例如

def classMethod(self, selection):
    getattr(self.a, selection)()

getattr将对象作为属性名称并返回该属性,然后可以调用该属性。