print OBJECT вызывает OBJECT.__str__(), тогда, когда вызывается OBJECT.__repr__()? Я вижу, что print OBJECT вызывает OBJECT.__repr__(), когда OBJECT.__str__() не существует, но я ожидаю, что не единственный способ вызвать __repr__().
Когда вызывается __repr __()?
Ответ 1
repr(obj)
вызовы
obj.__repr__
цель __repr__ заключается в том, что она обеспечивает "формальное" представление объекта, который должен быть выражением, которое может быть eval ed для создания объекта. то есть
obj == eval(repr(obj))
должен, но не всегда на практике, дает True
В комментариях мне было предложено указать пример obj != eval(repr(obj)).
class BrokenRepr(object):
def __repr__(self):
return "not likely"
здесь другой:
>>> con = sqlite3.connect(':memory:')
>>> repr(con)
'<sqlite3.Connection object at 0xb773b520>'
>>>
Ответ 2
Вызывается не только __repr__() при использовании repr(), но также в следующих случаях:
- В командной строке введите
objи нажмите enter - Вы когда-либо печатали объект в словаре /tuple/list. Например:
print [u'test']не печатает['test']
Ответ 3
repr(obj) вызывает obj.__repr__.
Это предназначено для четкого описания объекта, особенно для целей отладки. Дополнительная информация в документах
Ответ 4
В python 2.x, `` `obj `` will end up calling obj. repr() . It shorthand for repr()`.