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

2024-04-20 00:44:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我决定使用str打印树型结构中的内容,使用

print tree

树的节点都是用户创建的类的对象,我重载了它们的__str__魔术方法,以便在缩进t制表符之后使用子节点的str

^{pr2}$

但是我不能用那个t参数调用str,但我可以调用node.__ str__(t=4),难道{}不是魔术方法的唯一快捷方式吗?或者这是因为解析器拒绝了str的附加参数而没有检查magic方法?在

另外,我对这种行为很感兴趣。我知道这不是打印树的最佳方式,这是一次黑客攻击;)


Tags: 对象方法用户nodetree内容参数节点
2条回答

想象一下。在

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

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

如果您有一个方法为__str__(self, t=0)的类Cstr(c)将调用C.__str__(c),它将t设置为声明的零。str()本身只接受一个参数。在

相关问题 更多 >