zl程序教程

您现在的位置是:首页 >  Python

当前栏目

Python|函数式编程|类的函数式实现

2023-03-15 22:02:27 时间

本文参考SICP,Function Abstraction

python作为一个现代语言,结合着OOP和FP的多种性质,不同于其他OOP语言,python中的函数具有自己的环境,让我们从这里入手,看看类在FP中可以如何实现.

函数,闭包,其内部名称只可被内部访问,因此,本质上,它可以视为大部分成员都是私有的对象。

那么,函数有什么是public的呢,答案是,返回值,这是函数与外界沟通的桥梁.

而我们则要借助这个桥梁,一点一点地把内部的所有私有成员给撬开。

答案是,表驱动,而这种实现也被称为Dispatcher,表内记载public,而其他的数据则是不可见的,这也是另一种形式下的权限访问。

def f(a):
   b=a
   def c():
     return 1
   map={"b":b,"c":c}
   def getitem(index):
      return map[index]
return getitem

我们可以回忆OOP中对象模型是如何实现的。C++中,为了操控一个对象,我们实际拥有的是this指针。而内部的成员等等都是通过偏移量计算得出。在编译器内部,偏移量又是一张符号表。它不可见于外界,但是同时又被类所知晓。

回头看一看,FP和OOP的思路殊途同归,都是借助着对外公开的唯一信息,逐渐抽丝剥茧,完成了对内部成员的访问。