假设我有一个班级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
?)
答案 0 :(得分:0)
嗯,错误说明了一切。 Bucket没有一种名为'方法'的方法。事实上,你没有编码,你只需填写“#”;并且'空'。
现在你说你用do_thing(fill,200)调用该函数。
究竟是什么论点'填充'?如果代码真的是这样的话,那么python将会失败,然后才能获得AttributeError作为' fill'是一个未定义的变量
xs
您可以传递要用作字符串的方法的名称。在这种情况下,你需要这个:
NameError: name 'fill' is not defined
但是,我建议你仔细考虑一下你想做什么。这不是一个非常干净的代码。你应该问问自己,你是否真的需要走这条路。