一尘不染

通过名称调用Python方法

python

如果我在字符串中有一个对象和一个方法名称,该如何调用该方法?

class Foo:
    def bar1(self):
        print 1
    def bar2(self):
        print 2

def callMethod(o, name):
    ???

f = Foo()
callMethod(f, "bar1")

阅读 184

收藏
2021-01-20

共1个答案

一尘不染

使用内置getattr()功能:

class Foo:
    def bar1(self):
        print(1)
    def bar2(self):
        print(2)

def call_method(o, name):
    return getattr(o, name)()


f = Foo()
call_method(f, "bar1")  # prints 1

您还可以setattr()用于通过名称设置类属性。

2021-01-20