2013-05-15 3 views
0

надеюсь скоро ответ! Любое направление помощи будет принята с большой благодарностью. Я пытаюсь подготовиться к выпускному экзамену.__repr__ с 2 списками с несколькими пунктами в списке

Это, как я бы называть класс:

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

+0

Вы возвращаете список из '__repr __()', что вы ожидаете? –

ответ

0

Функция __repr__ должна вернуть string, но вы возвращаете list. Возможно, вы хотите изменить линию return на return '\n'.join(new).

+0

Спасибо, что это помогло –

0

Try:

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

В основном вам нужно вернуть результат в желаемом выходе, который через запятую строка.

Смежные вопросы