class MyClass:
def __init__(self):
self.list_ = []
def __repr__(self):
return '\n'.join(['this','should','all','be','on','separate','lines']) + str([str(list_val) for list_val in self.list_])
myClass = MyClass()
myClass.list_.append(MyClass())
myClass.list_[0].list_.append(MyClass())
print(myClass)
我希望这段代码能打印出来:
this
should
all
be
on
separate
lines[this
should
all
be
on
separate
lines[this
should
all
be
on
separate
lines]]
或类似的东西,但它会打印
this
should
all
be
on
separate
lines["this\nshould\nall\nbe\non\nseparate\nlines['this\\nshould\\nall\\nbe\\non\\nseparate\\nlines[]']"]
也就是说,当我尝试__repr__
在同一个类的另一个对象的方法中将一个对象转换为字符串时,它会将换行符转换为\n
,如果我进一步嵌套它会导致\\n
,并且每次嵌套它都会添加转义序列之前的附加反斜杠。
看完这个问题后,似乎该__repr__
方法认为我实际上想要两个字符\
and n
,但我不:我想要转义序列\n
。有没有办法覆盖它并强制它解释为换行符而不是两个单独的字符?