无法打印Python中列表的内容

1 投票
4 回答
787 浏览
提问于 2025-04-16 07:04

我创建了一个包含列表的类,代码如下:

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

这个功能运行得很好。

我还添加了一个方法来打印我的列表内容:

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

但是这个方法运行得不太好。当我尝试往这个列表里添加一个对象时,出现了以下错误:

<__main__.Bok object at 0x05777970>

这个对象是一个叫做 Bok 的类。

我完全不知道该怎么解决这个问题。

4 个回答

2

其实这并不是一个错误——它只是在打印你的对象,而这个对象是属于Bok这个类的。你可以试着在Bok类里面添加一个__str__方法,这样就能打印出它的内容了。你可以在这里看到怎么做:http://en.wikibooks.org/wiki/Python_Programming/Classes

作为一个简单的测试,试着在你的Bok类里面添加以下内容:

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

然后再运行你的测试。

6

当你调用打印函数时,它会自动调用你对象的 __str__ 方法。默认情况下,这个方法会显示对象的类型和内存地址。如果你想让你的对象以更易读的方式显示,你需要在你的类里重新定义一下 __str__ 方法。

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

     # Other members here...
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!

撰写回答