When I am in the Python or IPython console, what is called when I am returned an output?

For example,

python
>> x = 1
>> x
1

I'm curious about what method/function on x is returning 1. I'm asking because I'm seeing differences between calling print x and simply x .

Similary, is there a way to specify what is called? Does this configuration exist in IPython?


When you inspect an object in that manner in a REPL, it invokes the object's __repr__ method. In comparison, print uses the object's __str__ method. Example:

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

When defining __repr__ and __str__ for your own classes, try to follow the documentation's suggestions regarding which one should be more detailed and "official".

[ __repr__ computes] the “official” string representation of an object. If at all possible, this should look like a valid Python expression that could be used to recreate an object with the same value (given an appropriate environment).
...
[ __str__ computes] the “informal” string representation of an object. This differs from __repr__() in that it does not have to be a valid Python expression: a more convenient or concise representation may be used instead.

链接地址: http://www.djcxy.com/p/4852.html

上一篇: 告诉IPython使用一个对象的`

下一篇: 当我在Python或IPython控制台中时,我返回输出时调用了什么?