在Python中使用参数调用对象的方法

时间:2011-03-30 15:06:29

标签: python reflection methods

我希望能够在具有动态函数名称的Python类上调用不同的方法,例如

class Obj(object):
    def A(self, x):
        print "A %s" % x

    def B(self, x):
        print "B %s" % x

o = Obj()

 # normal route
o.A(1) # A 1
o.B(1) # B 1

 # dynamically
foo(o, "A", 1) # A 1; equiv. to o.A(1)
foo(o, "B", 1) # B 1

什么是“foo”? (或者是否有其他方法?)我确定它必须存在,但我似乎无法找到它或记住它的名称。我查看了getattrapply以及list of built-in functions中的其他人。这是一个简单的参考问题,但唉,我来了!

感谢阅读!

2 个答案:

答案 0 :(得分:30)

嗯,getattr确实似乎是你想要的:

getattr(o, "A")(1)

相当于

o.A(1)

答案 1 :(得分:5)

Python中的方法是第一类对象。

getattr(o, 'A')(1)