【发布时间】:2015-11-04 19:58:56
【问题描述】:
假设我有一个类Bucket 和一个函数do_thing(这是一个非常简化的示例)。我想将一个参数传递给do_thing,它将创建一个Bucket 的实例并对该Bucket 对象执行指定的方法。
Class Bucket:
__init__(self, volume):
...
def fill(self):
...
def empty(self):
...
def do_thing(method, vol):
A = Bucket(vol)
A.method()
这不起作用,显然如果我尝试do_thing("fill", 200),它会引发AttributeError: Bucket instance has no attribute 'method'。那么如何调用具体的方法(本例为fill?)
【问题讨论】:
-
getattr(A, method)()? Python 不会神奇地将属性名称method替换为不相关参数method的值。另见stackoverflow.com/q/3521715/3001761 -
@jonrsharpe 酷。我的谷歌搜索没有返回那个特定的问题,但希望从现在开始它会通过这个