所以我有一个类,叫做Vertex
。
class Vertex:
'''
This class is the vertex class. It represents a vertex.
'''
def __init__(self, label):
self.label = label
self.neighbours = []
def __str__(self):
return("Vertex "+str(self.label)+":"+str(self.neighbours))
我要打印此类对象的列表,如下所示:
x = [Vertex(1), Vertex(2)]
print x
但它显示了如下输出:
[<__main__.Vertex instance at 0xb76ed84c>, <__main__.Vertex instance at 0xb76ed86c>]
实际上,我想为每个对象打印Vertex.label
的值。
有办法吗?
如果你想要更多的信息除了丹尼尔·罗斯曼的回答:
在python中,
__repr__
和__str__
是两个不同的东西。(但是,请注意,如果您只定义了__repr__
,那么对class.__str__
的调用将转换为对class.__repr__
的调用)__repr__
的目标是明确无误。另外,如果可能的话,您应该定义repr以便(在您的情况下)eval(repr(instance)) == instance
另一方面,
__str__
的目标是可以重新设计;因此,如果必须在屏幕上打印实例(可能是对用户而言),如果不需要,那么就不要实现它(同样,如果未实现中的str将被称为repr),这很重要另外,当在空闲解释器中键入内容时,它会自动调用对象的repr表示。或者当您打印一个列表时,它调用
list.__str__
(与list.__repr__
相同),依次调用列表中包含的任何元素的repr表示。这解释了你的行为,并希望如何解决它如果只想打印每个对象的标签,可以使用循环或列表理解:
但是要回答您原来的问题,您需要定义
__repr__
方法来获得正确的列表输出。可能是这么简单:相关问题 更多 >
编程相关推荐