【发布时间】:2018-06-12 12:17:10
【问题描述】:
以此为例:
class Foo(object):
def __init__(self, msg):
self._msg = msg
def __call__(self):
return self._msg
foo = Foo('hello')
print(foo()) # Prints 'hello'
foo.__call__ = lambda _: 'bye'
print(foo()) # Prints 'hello'
我可以在 Python 2.x 和 Python 3.x
上重现这一点我无法在有关此行为的文档中找到任何相关信息。
这对我来说完全是一个有效的用例,特别是在猴子补丁时。
这是不允许的原因吗?
【问题讨论】:
-
@khelwood 傻我 :) 你完全正确,这是有道理的
标签: python