如何检索任意树节点的所有属性?
How to retrieve all attributes of an anytree Node?
对于anytree
Node
,我怎样才能得到所有的属性和它们的值?
例如,如果我这样做:
>>> 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')]
对于anytree
Node
,我怎样才能得到所有的属性和它们的值?
例如,如果我这样做:
>>> 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')]