gpt4 book ai didi

python - 为什么 str 不能得到第二个参数,而 __str__ 可以?

转载 作者:太空狗 更新时间:2023-10-29 22:27:44 25 4
gpt4 key购买 nike

我决定使用 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 ;)

最佳答案

这样想象吧。

def str(obj):
try:
return obj.__str__()
except ...:
...

仅仅因为 __str__ 可以接受更多参数,并不意味着 str 被配置为传递这些参数。

关于python - 为什么 str 不能得到第二个参数,而 __str__ 可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7353486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com