Должен ли я использовать `NodeVisitor` для прохождения / изменения / анализа Python AST? - PullRequest
0 голосов
/ 18 апреля 2020

Пакет Python stdlib ast рекомендует использовать класс NodeVisitor для того, чтобы что-то сделать с AST.

Кажется, что в голове каждого программиста (не только pythonista) шаблон «Посетитель» (как описано в GOF) связан с обходом иерархических структур данных, таких как деревья. Очень естественно «посещать» узел за узлом.

Но, по сути, был изобретен паттерн «Посетитель», чтобы решить совершенно другую, очень специфическую проблему - реализовать двойную диспетчеризацию в языках, в которых она отсутствует, как C ++ и Java (и Python, а также).

Вот очень хорошее объяснение проблемы и решения: https://eli.thegreenplace.net/2016/a-polyglots-guide-to-multiple-dispatch

Итак Вопрос в том, стоит ли мне возиться с предлагаемым подходом? Лично мне было очень трудно понять реализацию подкласса NodeVisitor. Какие еще приемы можно использовать для АСТ вещей?

...