使用参数调用特定方法

时间:2015-11-04 11:20:48

标签: python arguments

假设我有一个班级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?)

1 个答案:

答案 0 :(得分:0)

嗯,错误说明了一切。 Bucket没有一种名为'方法'的方法。事实上,你没有编码,你只需填写“#”;并且'空'。

现在你说你用do_thing(fill,200)调用该函数。

究竟是什么论点'填充'?如果代码真的是这样的话,那么python将会失败,然后才能获得AttributeError作为' fill'是一个未定义的变量

xs

您可以传递要用作字符串的方法的名称。在这种情况下,你需要这个:

NameError: name 'fill' is not defined

但是,我建议你仔细考虑一下你想做什么。这不是一个非常干净的代码。你应该问问自己,你是否真的需要走这条路。