2024-04-20 00:44:22 发布
网友
我决定使用str打印树型结构中的内容,使用
print tree
树的节点都是用户创建的类的对象,我重载了它们的__str__魔术方法,以便在缩进t制表符之后使用子节点的str
__str__
但是我不能用那个t参数调用str,但我可以调用node.__ str__(t=4),难道{}不是魔术方法的唯一快捷方式吗?或者这是因为解析器拒绝了str的附加参数而没有检查magic方法?在
t
str
node.__ str__(t=4)
另外,我对这种行为很感兴趣。我知道这不是打印树的最佳方式,这是一次黑客攻击;)
想象一下。在
def str(obj): try: return obj.__str__() except ...: ...
仅仅因为__str__可以接受更多参数,并不意味着str被配置为传递这些参数。在
如果您有一个方法为__str__(self, t=0)的类C,str(c)将调用C.__str__(c),它将t设置为声明的零。str()本身只接受一个参数。在
__str__(self, t=0)
C
str(c)
C.__str__(c)
str()
想象一下。在
仅仅因为
__str__
可以接受更多参数,并不意味着str
被配置为传递这些参数。在如果您有一个方法为
__str__(self, t=0)
的类C
,str(c)
将调用C.__str__(c)
,它将t设置为声明的零。str()
本身只接受一个参数。在相关问题 更多 >
编程相关推荐