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
,而是pythonREPL
计算器的结果。感谢您的回答!我以前在这里读过关于repr的内容,但我看不到的是,repr函数的显式调用到底在哪里。我的意思是,如果它是del,我可以理解显式调用,因为随着pop的出现,对象将被删除。但确切的问题是通过pop()调用repr的位置。pop()
函数返回一个项。在python的REPL
模式下调用函数时(即在终端中运行python
时),任何函数的返回值都会打印到屏幕上。打印返回值时,Python会自动调用\uuu repr\uuu
将对象转换为可以显示给用户的字符串。这是屏幕上显示的结果。没有显式调用\uuu repr\uu
,而是pythonREPL
计算器的结果。