Python 为什么在下面的代码中调用_urepr _uu?

Python 为什么在下面的代码中调用_urepr _uu?,python,Python,有人能告诉我为什么在下面的代码中用q.pop()方法调用\uu repr\uu方法吗 >>> class Item: ... def __init__(self, name): ... self.name = name ... def __repr__(self): ... return 'Item({!r})'.format(self.name) ... >>> q = PriorityQueue() >

有人能告诉我为什么在下面的代码中用
q.pop()
方法调用
\uu repr\uu
方法吗

>>> 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') 
>>>

内置的
\uuuu repr\uuuu
函数用于返回对象的可打印格式。在这种情况下,由于
是一个自定义对象/类,
中的覆盖允许在终端中显示
的实例。请参见当他们调用
q.pop()
时,项目将打印到屏幕上,并且此打印是通过覆盖
\uuuu repr\uuu
函数完成的

q.pop()
打印
Item('bar')
,因为
的被重写的
\uuu repr\uuu
函数表示打印
'Item({!r}).format(self.name)
。这将打印单词:
Item(“”)
,格式部分在单引号之间填充项目的实际内容,从而将
Item('bar')
打印到屏幕上

请在此处阅读更多信息:

内置的
\uuuu repr\uuu
函数用于返回对象的可打印格式。在这种情况下,由于
是一个自定义对象/类,
中的覆盖允许在终端中显示
的实例。请参见当他们调用
q.pop()
时,项目将打印到屏幕上,并且此打印是通过覆盖
\uuuu repr\uuu
函数完成的

q.pop()
打印
Item('bar')
,因为
的被重写的
\uuu repr\uuu
函数表示打印
'Item({!r}).format(self.name)
。这将打印单词:
Item(“”)
,格式部分在单引号之间填充项目的实际内容,从而将
Item('bar')
打印到屏幕上

请在此处阅读更多信息:

将代码放在问题中可能是个好主意,而不是链接受版权保护的材料如果不将代码添加到问题中,您会让我们发疯的。在每行代码前多加4个空格。将代码放在问题中可能是个好主意,而不是链接受版权保护的材料。如果你不将代码添加到问题中,你会让我们发疯的。在每行代码前加上4个空格。谢谢你的回答!我以前在这里读过关于repr的内容,但我看不到的是,repr函数的显式调用到底在哪里。我的意思是,如果它是del,我可以理解显式调用,因为随着pop的出现,对象将被删除。但确切的问题是通过pop()调用repr的位置。
pop()
函数返回一个
项。在python的
REPL
模式下调用函数时(即在终端中运行
python
时),任何函数的返回值都会打印到屏幕上。打印返回值时,Python会自动调用
\uuu repr\uuu
将对象转换为可以显示给用户的字符串。这是屏幕上显示的结果。没有显式调用
\uuuu repr\uuuu
,而是python
REPL
计算器的结果。感谢您的回答!我以前在这里读过关于repr的内容,但我看不到的是,repr函数的显式调用到底在哪里。我的意思是,如果它是del,我可以理解显式调用,因为随着pop的出现,对象将被删除。但确切的问题是通过pop()调用repr的位置。
pop()
函数返回一个
项。在python的
REPL
模式下调用函数时(即在终端中运行
python
时),任何函数的返回值都会打印到屏幕上。打印返回值时,Python会自动调用
\uuu repr\uuu
将对象转换为可以显示给用户的字符串。这是屏幕上显示的结果。没有显式调用
\uuu repr\uu
,而是python
REPL
计算器的结果。