【发布时间】:2020-02-04 16:55:07
【问题描述】:
我需要更改给定对象的__call__ 方法的行为。天真的方法是这样的:
class A(object):
def __call__(self):
return 1
def new_call():
return 42
a = A()
a.__call__ = new_call
为什么不是a()42的输出?有没有我可以利用的解决方法来达到相同的效果? (不使用类)
============================= 编辑================== ===============
根据记录,简短的回答是否定的。 Python 直接在类而不是实例上调用像__call_ 这样的“特殊方法”,因此如果您需要更改方法,则需要在类本身上进行更改。
【问题讨论】:
-
首先你不需要在 new_call 中包含 self 参数吗?为什么不直接继承 A 类
标签: python python-3.x