#python-3.x #anytree
#python-3.x #anytree
Вопрос:
У меня есть существующее дерево, и я хотел бы добавить функциональность anytree, добавив NodeMixin. Проблема в том, что NodeMixin хочет иметь фиксированное имя «дочерние элементы» для своих подэлементов, и у меня уже есть список с другим именем.
Другая проблема (я использую mypy) заключается в том, что список завершающих элементов не является необязательным — у терминальных узлов есть пустые списки, а NodeMixin хочет, чтобы «None» был «дочерним» для терминальных объектов.
Это приведет к большим изменениям, если мне придется переименовать объект и иметь дело с необязательным характером дочерних элементов.
Можно ли определить дочерние элементы как @property или как ссылку на существующие подэлементы?
Ответ №1:
(а) можно использовать свойства для родительских и дочерних элементов, (б) было легко написать пользовательский итерируемый класс для дочерних элементов, чтобы учитывать различия между anytree и моими итерациями дерева.
Обновление: свойство is_leaf также должно быть переопределено — иначе оно будет истинным для каждого узла.