Python:如何在PriorityQueue中设置_str____函数
我制作了一个优先级队列,其函数使用我的二进制堆函数。然而,在我的测试文件中,我试图打印出我的队列,使其看起来像这样Python:如何在PriorityQueue中设置_str____函数,python,string,function,Python,String,Function,我制作了一个优先级队列,其函数使用我的二进制堆函数。然而,在我的测试文件中,我试图打印出我的队列,使其看起来像这样 Your queue looks like this: 15 -> 45 -> 10 -> 100 但是,在类似的地方,它会不断打印出队列存储的位置,而不是队列中的项目,例如: <PriorityQueue.PriorityQueue object at 0x01E95530> 编辑:我尝试执行以下操作: def __str__(self):
Your queue looks like this: 15 -> 45 -> 10 -> 100
但是,在类似的地方,它会不断打印出队列存储的位置,而不是队列中的项目,例如:
<PriorityQueue.PriorityQueue object at 0x01E95530>
编辑:我尝试执行以下操作:
def __str__(self):
return str(self.heap)
def __str__(self):
return str(self.heap)
这仅打印出以下内容:
<MyHeap.Heap object at 0x01E255F0>
好的,
\uuu str\uuu
的思想是返回某种字符串,以人类可读的方式表示对象。您必须构造字符串,然后将打印您返回的任何内容,而不是
<PriorityQueue.PriorityQueue object at 0x01E95530>
请注意,我们使用的是self.heap.heap
,而不是self.heap
,因为在本例中self
是一个PriorityQueue
实例,PriorityQueue有一个.heap属性,其中包含一个heap
。我们实际上想调用.Heap
的就是这个Heap
,它反过来给我们提供了我们想要的列表
编辑:我尝试执行以下操作:
def __str__(self):
return str(self.heap)
def __str__(self):
return str(self.heap)
相反,请尝试以下方法:
def __str__(self):
return self.heap.__str__()
有关使用哪一个的选择,请参阅。在这种情况下,您可能需要
\uuuuuuu str\uuuuuu
。@augurar我现在明白了为什么我要使用\uuuuuuuuu str\uuuuuu
我将如何将其插入我的PQ类?我下面的答案提供了更直接的回答,尽管它不会提供花哨的->
连接。为了记录在案,@rickcnagy的解决方案有一个错误。:-)行3
不应该是self.heap
(而不是self.heap.heap
)。@lifebalance不,我相当确定它应该是self.heap.heap
。这是因为在本例中,self
是一个PriorityQueue
实例,PriorityQueue
有一个.heap
属性,该属性包含一个堆
。我们实际上想调用.Heap
的就是这个Heap
,它反过来给我们提供了我们想要的列表。这有意义吗?
def __str__(self):
return str(self.heap)
def __str__(self):
return self.heap.__str__()