объединение узлов любого дерева с использованием свойства или ссылки

#python-3.x #anytree

#python-3.x #anytree

Вопрос:

У меня есть существующее дерево, и я хотел бы добавить функциональность anytree, добавив NodeMixin. Проблема в том, что NodeMixin хочет иметь фиксированное имя «дочерние элементы» для своих подэлементов, и у меня уже есть список с другим именем.

Другая проблема (я использую mypy) заключается в том, что список завершающих элементов не является необязательным — у терминальных узлов есть пустые списки, а NodeMixin хочет, чтобы «None» был «дочерним» для терминальных объектов.

Это приведет к большим изменениям, если мне придется переименовать объект и иметь дело с необязательным характером дочерних элементов.

Можно ли определить дочерние элементы как @property или как ссылку на существующие подэлементы?

Ответ №1:

(а) можно использовать свойства для родительских и дочерних элементов, (б) было легко написать пользовательский итерируемый класс для дочерних элементов, чтобы учитывать различия между anytree и моими итерациями дерева.

Обновление: свойство is_leaf также должно быть переопределено — иначе оно будет истинным для каждого узла.