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

18 投票
2 回答
26056 浏览
提问于 2025-04-16 14:44

我想在一个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,还有其他一些在内置函数列表中的东西。这真是个简单的参考问题,但我还是在这里苦恼!

谢谢你的阅读!

2 个回答

8

在Python中,方法被视为一等公民。

getattr(o, 'A')(1)
45

好的,getattr 确实是你想要的东西:

getattr(o, "A")(1)

这和下面的内容是一样的:

o.A(1)

撰写回答