"__call__(self,x): return self.foo_method(x)" 的用法及其与 "class.foo_method(x)" 的区别
Usage of "__call__(self,x): return self.foo_method(x)" and its difference to "class.foo_method(x)"
代码源自 python 中从头开始的神经网络实现,如果需要,您可以查看此 link 上的完整代码,并在此处查看有关我的问题的关键部分,我希望python 面向:
class model:
def __init__(self,blah blah...):
blah blah
def forward(self,x):
blah blah
return output_of_neural_network
def __call__(self,x):
return forward(x)
假设我们要在代码的以下部分中使用 forward 方法...
将 class 作为函数调用的目的是什么,例如model(xtrain)
而不是 model.forward(xtrain)
?
当作为函数调用而不是直接应用其方法时,class 对象的实例或变量是否存在任何功能差异?
如您所想,它是完全没有功能差异的纯语法糖。
我想这背后的原因是将您的 Model
视为转换输入数据。这一点,我相信,scikit-learn
选择使用它的 transform
方法,这可以说是不那么模棱两可的。
代码源自 python 中从头开始的神经网络实现,如果需要,您可以查看此 link 上的完整代码,并在此处查看有关我的问题的关键部分,我希望python 面向:
class model:
def __init__(self,blah blah...):
blah blah
def forward(self,x):
blah blah
return output_of_neural_network
def __call__(self,x):
return forward(x)
假设我们要在代码的以下部分中使用 forward 方法...
将 class 作为函数调用的目的是什么,例如model(xtrain)
而不是 model.forward(xtrain)
?
当作为函数调用而不是直接应用其方法时,class 对象的实例或变量是否存在任何功能差异?
如您所想,它是完全没有功能差异的纯语法糖。
我想这背后的原因是将您的 Model
视为转换输入数据。这一点,我相信,scikit-learn
选择使用它的 transform
方法,这可以说是不那么模棱两可的。