Посмотрите документацию Python по адресу: http://docs.python.org/reference/datamodel.html#object.repr
объект. магнезии (само)
Called by the repr() built-in function and by string conversions
(обратные кавычки) для вычисления «официального» строкового представления
объект. Если это вообще возможно, это должно выглядеть как действительный Python
выражение, которое можно использовать для воссоздания объекта с тем же
значение (с учетом соответствующей среды). Если это невозможно,
Строка вида <... некоторое полезное описание ...> должна быть возвращена.
Возвращаемое значение должно быть строковым объектом. Если класс определяет
repr (), но не str (), тогда repr () также используется, когда
«Неформальное» строковое представление экземпляров этого класса
требуется.
This is typically used for debugging, so it is important that the
представление богато информацией и однозначно.
объект. * * Ул одна тысяча двадцать-одна * +1022 * (само)
Called by the str() built-in function and by the print statement
для вычисления «неформального» строкового представления объекта. это
отличается от repr () тем, что он не обязательно должен быть действительным Python
выражение: может быть использовано более удобное или краткое представление
вместо. Возвращаемое значение должно быть строковым объектом.
Пример: * * тысяча тридцать-один
>>> class A():
... def __repr__(self): return "repr!"
... def __str__(self): return "str!"
...
>>> a = A()
>>> a
repr!
>>> print(a)
str!
>>> class B():
... def __repr__(self): return "repr!"
...
>>> class C():
... def __str__(self): return "str!"
...
>>> b = B()
>>> b
repr!
>>> print(b)
repr!
>>> c = C()
>>> c
<__main__.C object at 0x7f7162efb590>
>>> print(c)
str!
Функция печати выводит на консоль все аргументы __str__
. Как print(str(obj))
.
Но в интерактивной консоли выводится возвращаемое значение функции __repr__
. И если __str__
не определено, вместо него можно использовать __repr__
.
В идеале __repr__
означает, что мы должны просто использовать это представление для воспроизведения этого объекта. Он не должен быть одинаковым для разных классов или объектов, представляющих разные значения, например, datetime.time:
Но __str__
(то, что мы получаем от str(obj)
) должно показаться хорошим, потому что мы показываем это пользователю.
>>> a = datetime.time(16, 42, 3)
>>> repr(a)
'datetime.time(16, 42, 3)'
>>> str(a)
'16:42:03' #We dont know what it is could be just print:
>>> print("'16:42:03'")
'16:42:03'
И, простите за плохой английский:).