为什么声称一个python类可以“更好”地实现为字典和一些函数?

时间:2011-12-02 14:26:00

标签: python functional-programming

我在回答问题Python progression path - From apprentice to guru时看到了这条指令。

  

9。每次为他们提供Python课程时,都要惹恼你的小隔间。声称它可以“更好”地实现为字典和一些功能。拥抱函数式编程。

但我不明白这一点。这与函数式编程有什么关系?

2 个答案:

答案 0 :(得分:3)

这意味着:

class A:
    def __init__(this):
        this.count = 0
    def bump(this):
        this.count += 1

a = A()
a.bump()

可以替换为:

def constructA():
    return {'count':0}

def bumpA(anA):
    anA['count'] += 1

a = constructA()
bumpA(a)

或更实用的风格,通过返回副本来避免副作用:

def bumpedA(anA):
    newA = {'count': (anA['count'] + 1 )}
    return newA

a = constructA()
a = bumpedA(a)

这是基本模式 - 您可以通过将方法放在字典本身(javascript样式)中来获取多态性,并且通常使用dicts和函数重构整个Python对象系统。

答案 1 :(得分:3)

这就是“Python进程路径”的原因在于它反映了一种认识,即Python类只是函数和dicts的语法糖,并且通过直接使用函数和dicts,需要更少的语言元素,从而使一个程序更“纯粹”。

当然这完全被误导了,这就是为什么它很有趣。或许我还没有达到启蒙?