当我在Python或IPython控制台中时,我返回输出时调用了什么?
例如,
python
>> x = 1
>> x
1
我很好奇x
上的方法/函数返回1.我在问,因为我看到调用print x
和简单的x
之间的区别。
相似,有没有办法指定所谓的? 这个配置是否存在于IPython中?
当您在REPL中以这种方式检查对象时,它会调用该对象的__repr__
方法。 相比之下, print
使用对象的__str__
方法。 例:
>>> class Widget:
... def __repr__(self):
... return "repr of a Widget"
... def __str__(self):
... return "str of a Widget"
...
>>> x = Widget()
>>> x
repr of a Widget
>>> print x
str of a Widget
>>> print [x,2,3]
[repr of a Widget, 2, 3]
>>> print repr(x)
repr of a Widget
>>> print str(x)
str of a Widget
为自己的类定义__repr__
和__str__
,请尝试遵循文档的建议,即关于哪一个应该更详细和“官方”。
[ __repr__
计算]对象的“官方”字符串表示形式。 如果可能的话,这应该看起来像一个有效的Python表达式,可用于重新创建具有相同值的对象(给定适当的环境)。
...
[ __str__
计算]对象的“非正式”字符串表示形式。 这与__repr__()
不同之处在于,它不一定是有效的Python表达式:可以使用更方便或简洁的表示。
上一篇: When I am in the Python or IPython console, what is called when I am returned an output?
下一篇: Python