Когда это строка или номер, это ясно, соответствующие печатаются
A = "это строка"
В = 3
A
this is a string
B
3
Что делать, если у меня есть более сложные объекты? Я спрашиваю, потому что я изучаю модуль и
A.name
B.name
приводит к одной строке (практически перезаписывает предыдущий ввод), в то время как
print (A.name)
print (B.name)
resutls в двух отдельных строках (нормальное поведение)
Если вы просто поместите объект в консоль, будет __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>
repr
.