上面搞错了。不是 Module类里面的 __call__,而是:
class _WrappedHook:
def __init__(self, hook: Callable, module: Optional["Module"] = None):
self.hook: Callable = hook
functools.update_wrapper(self, hook)
self.with_module: bool = False
if module is not None:
self.module: weakref.ReferenceType[Module] = weakref.ref(module)
self.with_module = True
def __call__(self, *args: Any, **kwargs: Any) -> Any:
if self.with_module:
module = self.module()
if module is None:
raise RuntimeError("You are trying to call the hook of a dead Module!")
return self.hook(module, *args, **kwargs)
return self.hook(*args, **kwargs)
都是同在module.py文件里面。self.hook 是 _WrappedHook对象初始化的时候,传入的。越来越看不懂了。_WrappedHook对象只在2处,有初始化代码。
【 在 JulyClyde 的大作中提到: 】
: 那hook变量是谁?
--
FROM 114.99.170.*