在python中,您可以通过实现__call__
方法使实例可调用。例如
class Blah:
def __call__(self):
print "hello"
obj = Blah()
obj()
但我也可以实现自己的方法,比如'run':
class Blah:
def run(self):
print "hello"
obj = Blah()
obj.run()
我应该何时实施__call__
?
答案 0 :(得分:19)
这很难回答。我的意见是你永远不应该定义__call__
,除非你的实际目标是创建一个函数。在您创建了传统对象之后,这不是您要做的事情。
换句话说,如果您开始考虑“我要创建一个对象”,那么您永远不应该最终实现__call__
。另一方面,如果你开始思考“我将创建一个函数......但我希望我可以使用对象框架让我的函数有一些状态”然后你可以创建一个函数作为一个对象状态,并定义__call__
以使其像一个函数。
我想在问题的评论中加入@Paul Manta提供的最后一点建议,他写道:
如果您不确定是否需要
__call__
,那么您不需要__call__
我认为这是合理的建议。