【发布时间】:2011-11-13 06:53:06
【问题描述】:
我决定使用 str 以树状结构打印树的内容,使用类似
print tree
树的节点都是用户创建的类的对象,我重载了他们的__str__魔术方法,以便在缩进t标签后使用子节点的str
def __str__ (self,t=0) :`
return t*'\t' + str(self.label) +':' +'\n'+ str(self.l,t+1)+'\n'+str(self.right,t+1)+'\n'
但是我不能用t参数调用str,但是我可以调用node.__ str__(t=4)。不是str,只是魔术方法的快捷方式吗?还是因为解析器拒绝了额外的参数到str 不检查魔术方法?
附:我对这种行为很感兴趣。我知道这不是打印树的最佳方式,它是一种 hack ;)
【问题讨论】:
标签: python string methods tree operator-overloading