LINUX.ORG.RU

Ответ на: комментарий от gtyrin

print - оператор, не перегружается.

перегрузить операцию "[]"

>>> class A:
...     def __getitem__(self,key):
...             return 'Hello'
...     def __setitem__(self,key,value):
...             print '[]'
...
>>> A()[0]
'Hello'
>>> A()[0]=11111
[]

anonymous
()
Ответ на: комментарий от anonymous

>print - оператор, не перегружается.

Что не мешает, как сказано выше, кастомизировать вывод оператора print при помощи перегрузки метода __str__.

Davidov ★★★★
()
Ответ на: комментарий от imp

> print перегружается через __repr__

>>> class Test :
...   def __str__( self ) :
...     return "str"
... 
>>> print Test()
str
>>> class Test :
...   def __repr__( self ) :
...     return "repr"
... 
>>> print Test()
repr
>>> class Test :
...   def __str__( self ) :
...     return "str"
...   def __repr__( self ) :
...     return "repr"
... 
>>> print Test()
str
>>> 

Правильный ответ: и __str__, и __repr__, но __str__ имеет приоритет,
если определены оба. Всё-таки, print предназаначен для
человекочитаемого вывода, как и __str__, а __repr__ может
использоваться на крайний случай, хотя и предназначен для получения
машиночитаемого текста.

watashiwa_daredeska ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.