2013-05-15 52 views
0

希望快速回答​​!任何方向的幫助將不勝感激。我正在爲我的期末考試做準備。__repr__與列表中的多個項目的列表

這是我將如何調用類:

>>> 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) 

感謝堆棧!

+0

您正在從'__repr __()'返回一個列表,您希望發生什麼? –

回答

0

__repr__函數必須返回string,但您要返回list。 也許你想將return行更改爲return '\n'.join(new)

+0

非常感謝你的幫助 –

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) 

基本上你需要返回輸出所需的輸出,這是一個逗號分隔的字符串。

相關問題