__call__
在 python 中,您可以通过实现该方法使实例可调用。例如
class Blah:
def __call__(self):
print "hello"
obj = Blah()
obj()
但我也可以实现自己的方法,比如“运行”:
class Blah:
def run(self):
print "hello"
obj = Blah()
obj.run()
我应该什么时候实施__call__
?
__call__
在 python 中,您可以通过实现该方法使实例可调用。例如
class Blah:
def __call__(self):
print "hello"
obj = Blah()
obj()
但我也可以实现自己的方法,比如“运行”:
class Blah:
def run(self):
print "hello"
obj = Blah()
obj.run()
我应该什么时候实施__call__
?
这很难回答。__call__
我的观点是,除非你的实际目标是创建一个函数,否则你永远不应该定义。在您已经创建了一个传统对象之后,您不会再做这件事。
换句话说,如果你开始思考“我要创建一个对象”,那么你永远不应该最终实现__call__
. 另一方面,如果您开始思考“我要创建一个函数......但我希望我可以使用对象框架让我的函数具有某种状态”,那么您可以将函数创建为一个对象状态,并定义__call__
使其像一个函数一样工作。
我想包括@Paul Manta在对该问题的评论中提供的最后一点建议,他在其中写道:
如果您不确定是否需要
__call__
,那么您不需要__call__
我认为这是中肯的建议。