首页 > 解决方案 > 使用属性或引用的anytree nodemixin

问题描述

我有一个现有的树,我想通过添加 NodeMixin 来添加任何树功能。问题是 NodeMixin 想要一个固定的名称 'children' 为其子元素,我已经有一个不同名称的列表。

另一个问题(我正在使用 mypy)是现有子元素列表不是可选的 - 终端节点有空列表,NodeMixin 想要“无”作为终端对象的“子元素”。

如果我必须重命名对象并处理孩子的可选性质,它将产生很多变化。

是否可以将子元素定义为@property 或现有子元素的引用?

标签: python-3.xanytree

解决方案


(a) 可以为父级和子级使用属性,(b) 很容易为子级编写自定义可迭代类,以解决 anytree 和我的树迭代之间的差异。

更新: is_leaf 属性也必须被覆盖 - 否则每个节点都是如此。


推荐阅读