我试图使一个对象基本上是一个列表,但具有额外的功能。当我使用它(例如通过打印它)我想要一个自定义显示。例如:递归列表类型对象中`__str__`方法的问题
class MyList(list):
def __init__(self, name, arg):
self.name=name
super().__init__(arg)
def __str__(self):
return "{0}: {1}".format(self.name,self[:])
if __name__=="__main__":
B = MyList("george",range(3))
A = MyList("bernadett",range(5,0,-1))
B.append(A)
A.append(B)
print(B)
它打印出george: [0, 1, 2, [5, 4, 3, 2, 1, [0, 1, 2, [...]]]]
我想它再进名单总是打印MYLIST的名字,我宁愿限制递归深度为1,而不是它应该只是打印名字,并留下它。
所以我想是这样的:George: [0, 1, 2, Bernadette: [5, 4, 3, 2, 1, George:]]
还,每当我试图改变__repr__
为列表类型的对象,我得到无限循环,我不知道为什么。
谢谢。
我认为你的问题可能是格式(self.name,自[:])。 self [:]可能导致程序调用list的__str__方法而不是MyList。读完我写的内容后,听起来很荒谬。然而,如果有机会,它可以帮助我,无论如何 – Jake
感谢您的帮助,我认为,调用切片的str,会在每个项目上调用str ...所以为前几个项目,然后str队列中的最后一个MyList项目,我想这会照顾它......但不是那么多。 – user2230408