2010-11-14 3 views
1

Я сделал класс, содержащий список, с помощью следующего кода:Невозможно распечатать содержимое списка в Python

class ProdReg: 
def __init__(self): 
    self.__Pliste=[] 

Это отлично работает. Я также добавил метод, чтобы напечатать содержимое моего списка:

def printProdReg(self): 
    for produkt in self.__Pliste: 
     print(produkt) 

Это не работает все замечательно, когда я пытаюсь добавить объект к этому списку, я получаю следующее сообщение об ошибке:

<__main__.Bok object at 0x05777970> 

Объект класса Bok.

Не знаю, что так когда-либо, как я могу это решить.

+0

Как насчет чтения документов? – Ant

ответ

4

Там нет никаких проблем, его просто, что переводчик не знает, как распечатать объект:

>>> class Me: 
...  pass 
... 
>>> me = Me() 
>>> print me 
<__main__.Me instance at 0xf98368> 

Если вам нужно что-то напечатать, вы можете добавить __str__ метод к объекту:

>>> class Me: 
...  def __str__(self): 
...    return "It's Me!" 
... 
>>> me = Me() 
>>> print me 
It's Me! 
1

Это не ошибка, это объект, возвращаемый функцией, которую вы используете для добавления в список.

6

Вызов для печати вызовов __str__ на ваш объект, который по умолчанию печатает тип и адрес памяти. Если вы хотите более читаемое представление своего объекта, вам нужно дать вашему классу новую реализацию __str__.

class Bok(object): 
    def __str__(self): 
     return 'This is a Bok!' 

    # Other members here... 
2

На самом деле это не ошибка - это печать вашего объекта, который имеет класс Bok. Попробуйте добавить __str__ в класс Bok, чтобы распечатать его содержимое. Вы можете увидеть, как здесь: http://en.wikibooks.org/wiki/Python_Programming/Classes.

В качестве простого теста, попробуйте добавить это к вашему Bok класс:

class Bok(object): 
    def __str__(self): 
     return "This is Bok" 

и работает тест снова.

+0

:/старый класс style –

+0

Отредактировано, спасибо! –

+0

Пытался добавить вам тест, и это сработало. Я попытался также добавить следующее: def __str __ (self): return Produkt__str __ (self) + '' + str (self._produktForfatter), но это вызывает ошибку follong: NameError: глобальное имя «Produkt__str__» не определено –

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