Как напечатать __repr__ в файле Python3? (не в оболочке)

Я знаю, что в Python Shell, когда вы печатаете >>> object это показывает object.__repr__ метод, и если вы печатаете >>> print(object) это показывает object.__str__ метод.

Но мой вопрос, есть ли короткий способ напечатать __repr__ во время выполнения файла Python?

Я имею в виду, в файле.py, если я использую print(object) это покажет object.__str__ и если я просто наберу object это ничего не показывает.

Я пытался использовать print(object.__repr__) но это печатает <bound method object.__repr__ of reprReturnValue>

Или это невозможно?

4 ответа

Решение

Если вы просто хотите распечатать представление и ничего больше, то

print(repr(object))

распечатает представление. Там, где ваш вызов пошёл не так, были пропущенные скобки, так как работает следующее:

print(object.__repr__())

Однако, если вы хотите, чтобы это было частью дополнительной информации, и вы используете форматирование строки, вам не нужно звонить repr(), вы можете использовать флаг конвертации !r

print('The representation of the object ({0!r}) for printing,'
      ' can be obtained without using "repr()"'.format(object))

Просто используйте repr(object),

print(repr(object))

Вы можете использовать старые backticks

print(`object`)

в Python 2 или

print(repr(object))

в обоих Python 2 и 3

Пытаться:

print(some_object.__repr__())

__repr__ перед его печатью необходимо вызвать, так как этот метод отличается от таких атрибутов, как __file__, __name__и т. д., которые не нужно называть (и не может, в этом отношении). То же самое верно для __str__() метод: вам нужно вызвать его с - some_object.__str__()не some_object.__str__,

Я предположил, что ОП ссылается на общий объект со словом object, а не фактический объект Python под названием object, поэтому я использовал имя переменной some_object вместо. Как было указано в комментариях, если вы буквально делаете object.__repr__() это вызовет исключение, так как __repr__() должен быть вызван на экземпляр (т.е. object().__repr__() буду работать).

Другие вопросы по тегам