Когда вызывается __repr __()?

print OBJECT вызывает OBJECT.__str__(), тогда, когда вызывается OBJECT.__repr__()? Я вижу, что print OBJECT вызывает OBJECT.__repr__(), когда OBJECT.__str__() не существует, но я ожидаю, что не единственный способ вызвать __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']

Ответ 4

В python 2.x, `` `obj `` will end up calling obj. repr() . It shorthand for repr()`.