Как напечатать __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))
Вы можете использовать старые 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__()
буду работать).