我知道pprint
可以打印嵌套列表或字典,它们都是树结构的类型,但我希望pprint
一个基于类的树,具有任意数量的子节点,这样节点根据它们在树中的级别向右缩进。
pprint
可以用来做我想要的,如果是的话,怎么做?我可以编写自己的函数来打印一棵树,但我想检查一下是否需要这样做。
考虑以下示例:
class Tree:
def __init__(self, value, *args):
self.value = value
self.children = args
tree = Tree("+", Tree(1), Tree("*", Tree(2), Tree(3)))
这是我的预期输出,如果我们要漂亮打印树:
+
1
*
2
3
同样,我当然可以推出自己的功能,但我想看看我是否可以使用pprint
代替,如果这样更容易,我只是忽略了一些东西。
pprint documentation没有为我的用例提供示例。
如果它有所作为,我使用的是Python 2.7。
答案 0 :(得分:3)
pprint适用于定义了__repr__
方法的任意类。
为了得到你想要的东西,我认为你必须管理自己的嵌套,此时你可以使用print
。
def __repr__(self, depth=1):
return_string = [str(self.value)]
for child in self.children:
return_string.extend(["\n", " " * (depth+1), child.__repr__(depth+1)])
return "".join(return_string)
然后pprint(tree)
和print tree
都会给你
+
1
*
2
3