如果我在字符串中有对象和方法名称,我该如何调用该方法?
class Foo:
def bar1(self):
print 1
def bar2(self):
print 2
def callMethod(o, name):
???
f = Foo()
callMethod(f, "bar1")
Run Code Online (Sandbox Code Playgroud)
Enr*_*sso 97
容易一个:
class Foo:
def bar1(self):
print 1
def bar2(self):
print 2
def callMethod(o, name):
getattr(o, name)()
f = Foo()
callMethod(f, "bar1")
Run Code Online (Sandbox Code Playgroud)
看看getattr
您还可以使用setattr按名称设置Class属性.
我有类似的问题,想通过引用调用实例方法.这是我发现的有趣的事情:
instance_of_foo=Foo()
method_ref=getattr(Foo, 'bar')
method_ref(instance_of_foo) # instance_of_foo becomes self
instance_method_ref=getattr(instance_of_foo, 'bar')
instance_method_ref() # instance_of_foo already bound into reference
Run Code Online (Sandbox Code Playgroud)
Python太神奇了!