Пакет Python stdlib ast
рекомендует использовать класс NodeVisitor
для того, чтобы что-то сделать с AST.
Кажется, что в голове каждого программиста (не только pythonista) шаблон «Посетитель» (как описано в GOF) связан с обходом иерархических структур данных, таких как деревья. Очень естественно «посещать» узел за узлом.
Но, по сути, был изобретен паттерн «Посетитель», чтобы решить совершенно другую, очень специфическую проблему - реализовать двойную диспетчеризацию в языках, в которых она отсутствует, как C ++ и Java (и Python, а также).
Вот очень хорошее объяснение проблемы и решения: https://eli.thegreenplace.net/2016/a-polyglots-guide-to-multiple-dispatch
Итак Вопрос в том, стоит ли мне возиться с предлагаемым подходом? Лично мне было очень трудно понять реализацию подкласса NodeVisitor
. Какие еще приемы можно использовать для АСТ вещей?