有人可以帮助我,为什么在下面的代码中使用__repr__
方法调用q.pop()
方法?
>>> class Item:
... def __init__(self, name):
... self.name = name
... def __repr__(self):
... return 'Item({!r})'.format(self.name)
...
>>> q = PriorityQueue()
>>> q.push(Item('foo'), 1)
>>> q.push(Item('bar'), 5)
>>> q.push(Item('spam'), 4)
>>> q.push(Item('grok'), 1)
>>> q.pop()
Item('bar')
>>> q.pop()
Item('spam')
>>> q.pop()
Item('foo')
>>> q.pop()
Item('grok')
>>>
答案 0 :(得分:3)
内置__repr__
函数用于返回对象的可打印格式。在这种情况下,因为Item
是自定义对象/类,__repr__
中的覆盖允许Item
的实例显示在终端中。查看他们何时致电q.pop()
,该项目将打印到屏幕上,并且此打印是通过覆盖__repr__
功能完成的。
q.pop()
打印Item('bar')
,因为__repr__
的被覆盖Item
函数表示打印'Item({!r})'.format(self.name)
。这会打印单词:Item('')
,格式部分会在单引号之间填充项目的实际内容,从而导致Item('bar')
被打印到屏幕上。
在这里阅读更多相关信息: Purpose of Python's __repr__