2010-11-14 35 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 2010-11-14 20:35:55

回答

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

:/舊班風格 – 2010-11-14 19:55:23

+0

編輯,謝謝! – 2010-11-14 19:57:37

+0

試圖添加你的測試,並工作。我試圖添加以下內容:def __str __(self): return Produkt__str __(self)+''+ str(self._produktForfatter)但這會導致follong錯誤:NameError:全局名稱'Produkt__str__'未定義 – 2010-11-14 20:03:47