2.2_Function类的实现

2.2 Function类的实现

下面我们从编程的角度思考图2-1表示的函数。具体来说,就是假设变量 xxyy 是之前实现的Variable实例,然后以Function类的形式实现可以处理它们的函数 ff 。这里有两点需要注意。

  • 在 Function 类中实现的方法, 其输入应为 Variable 实例, 输出应为 Variable 实例

  • Variable实例的实际数据存在于实例变量 data 中

在满足这两点的基础上,将Function类按以下方式实现。

class Function: def__call__(self,input):  $\mathrm{x} =$  input.data #取出数据  $\mathbf{y} = \mathbf{x}$ $2\#$  实际的计算 output  $=$  Variable(y) #作为Variable返回 returnoutput

上面的代码实现了__call__方法。__call__方法接收input参数,这里假定传来的input是Variable实例。因此,实际数据存放在input.data中。取出数据后,方法会执行相应的计算(在这个例子中是求平方),然后将结果放到Variable“箱子”里并返回。

__call__方法是一个特殊的Python方法。定义了这个方法后,当f = Function()时,就可以通过编写f(...)来调用__call__方法了。