Интерактивная оболочка Python: как узнать, какой метод используется, когда я просто набираю имя объекта?

1

Когда это строка или номер, это ясно, соответствующие печатаются

A = "это строка"
В = 3

A
this is a string
B
3

Что делать, если у меня есть более сложные объекты? Я спрашиваю, потому что я изучаю модуль и

A.name 
B.name 

приводит к одной строке (практически перезаписывает предыдущий ввод), в то время как

print (A.name)
print (B.name)

resutls в двух отдельных строках (нормальное поведение)

Теги:

1 ответ

1
Лучший ответ

Если вы просто поместите объект в консоль, будет __repr__ метод __repr__, и вы увидите, что возвращает этот метод. Печать явно использует __str__. print возвращается к __repr__ если нет __str__.

Демо-версия:

>>> class A:
...     def __repr__(self):
...         return '__repr__'
...     def __str__(self):
...         return '__str__'
... 
>>> a = A()
>>> a
__repr__
>>> print(a)
__str__
>>> del A.__str__
>>> a
__repr__
>>> print(a)
__repr__
>>> del A.__repr__
>>> a
<__main__.A object at 0x7f4bdf0034a8>
>>> print(a)
<__main__.A object at 0x7f4bdf0034a8>
  • 0
    Так что я предполагаю, что в моем случае метод ( repr ) отвечает за перезапись предыдущего вывода?
  • 0
    @MiniMe, наверное. Вы всегда можете проверить с помощью встроенного repr .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню