【问题标题】:How to retrieve all attributes of an anytree Node?如何检索anytree节点的所有属性?
【发布时间】:2022-01-03 12:44:31
【问题描述】:

对于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'}

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

【问题讨论】:

  • 您链接到的文档包括Node 的所有方法的列表,其中不包括您要求的内容。如您所知,您可以使用dir 来获取所有属性名称(然后例如getattr 来访问它们的值),但这将包括一些您认为不相关的。

标签: python tree anytree


【解决方案1】:

这适用于您的情况:

s0.__dict__.items()

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

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

【讨论】:

    猜你喜欢
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 2020-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多