如何检索任意树节点的所有属性?

How to retrieve all attributes of an anytree Node?

对于anytreeNode,我怎样才能得到所有的属性和它们的值?

例如,如果我这样做:

>>> from anytree import Node
>>> root = Node("root")
>>> s0 = Node("sub0", parent=root, foo="10", bar="ggg")

我怎样才能得到类似 [("foo", "10"), ("bar", "ggg")] 的东西?

我可以通过以下方式想出一条路线:

>>> s1=Node("dummy", parent=root)
>>> set(dir(s0))-set(dir(s1))
{'foo', 'bar'}

但我希望有更简洁的方法。

这适用于您的情况:

s0.__dict__.items()

但是,请注意此方法依赖于 anytree 的内部实现(依赖特定实现总是一个坏主意)。此外,__dict__ 属性还包含名称、父项和(可选)子项(您可能希望删除这些)。

[(k, v) for k, v in s0.__dict__.items() if k not in ('name', 'parent', 'children')]