__repr__包含列表中包含多个项目的2个列表

时间:2013-05-15 03:45:08

标签: python class

希望快速回答​​!任何方向的帮助将不胜感激。我正在为我的期末考试做准备。

这就是我打电话给班级的方式:

    >>> Q = priorityQueue()
    >>> Q.insert("text",10)
    >>> Q.insert("hello", 18)
    >>> Q
    text 10, hello 18

所以我有一个类:

    class priorityQueue():

          def __init__(self):
              self.items = []
              self.priorities = []

           def insert(self, x, p):
              self.items.append(x)
              self.priorities.append(p)

           #This is where I dont understand how to get it to return how it should.
           def __repr__(self):
               new = []
               for x in range(len(self.items)):
                   new.append(str(self.items[x])+ " " +str(self.priorities[x]))
               return [str(x) for x in new]

这会给我一个错误:

      TypeError: __repr__ returned non-string (type list)

谢谢Stack!

2 个答案:

答案 0 :(得分:0)

__repr__函数必须返回string,但您要返回list。 您可能希望将return行更改为return '\n'.join(new)

答案 1 :(得分:0)

尝试:

def __repr__(self):
    new = []
    for x in range(len(self.items)):
        new.append(str(self.items[x])+ " " +str(self.priorities[x]))
    return ','.join(new)

基本上你需要在所需的输出中返回输出,这是一个以逗号分隔的字符串。