Зачем утверждать, что класс python может быть «лучше» реализован в виде словаря плюс некоторые функции? - PullRequest
3 голосов
/ 02 декабря 2011

Я видел эту инструкцию в ответе на вопрос Путь развития Python - от ученика к гуру .

9.Раздражайте своих товарищей по кабинке каждый раз, когда они представляют вам класс Python.Утверждают, что это может быть «лучше» реализовано в виде словаря плюс некоторые функции.Охватите функциональное программирование.

Но я этого не понимаю.Что это делает с функциональным программированием?

Ответы [ 2 ]

3 голосов
/ 02 декабря 2011

Причина, по которой это происходит в «пути развития Python», заключается в том, что он отражает понимание того, что классы Python являются просто синтаксическим сахаром для функций и диктов, и что при непосредственном использовании функций и диктов требуется меньше элементов языка, тем самым сделать свои программы более "чистыми".

Конечно, это совершенно неверно, поэтому это смешно. Или, может быть, я просто еще не достиг просветления?

3 голосов
/ 02 декабря 2011

Это означает, что:

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), и, как правило, реконструировать всю объектную систему Python с использованием диктов и функций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...