Ответ 1
Try:
class Test:
def __repr__(self):
return 'asd'
И прочитайте ссылку :
Ну, этот интерактивный фрагмент консоли python расскажет все:
>>> class Test:
... def __str__(self):
... return 'asd'
...
>>> t = Test()
>>> print(t)
asd
>>> l = [Test(), Test(), Test()]
>>> print(l)
[__main__.Test instance at 0x00CBC1E8, __main__.Test instance at 0x00CBC260,
__main__.Test instance at 0x00CBC238]
В основном я хотел бы получить три строки asd
, напечатанную при печати списка. Я также пробовал pprint
, но он дает те же результаты.
Try:
class Test:
def __repr__(self):
return 'asd'
И прочитайте ссылку :
Предложение в других ответах на реализацию __repr__
- определенно одна возможность. Если это невозможно по какой-либо причине (существующий тип, __repr__
, необходимый по причинам, отличным от эстетического, и т.д.), Просто выполните
print [str(x) for x in l]
или, как утверждают некоторые, map(str, l)
(чуть более компактный).
Вам нужно сделать метод __repr__
:
>>> class Test:
def __str__(self):
return 'asd'
def __repr__(self):
return 'zxcv'
>>> [Test(), Test()]
[zxcv, zxcv]
>>> print _
[zxcv, zxcv]
Обратитесь к docs:
object.__repr__(self)
Вызывается встроенной функцией
repr()
и строковыми преобразованиями (обратными кавычками) для вычисления "официального" строкового представления объекта. Если это вообще возможно, это должно выглядеть как действительное выражение Python, которое может быть использовано для воссоздания объекта с тем же значением (с учетом соответствующей среды). Если это невозможно, следует вернуть строку формы<...some useful description...>
. Возвращаемое значение должно быть строковым. Если класс определяет__repr__()
, но не__str__()
, тогда__repr__()
также используется, когда требуется "неформальное" строковое представление экземпляров этого класса.Это обычно используется для отладки, поэтому важно, чтобы представление было информативным и недвусмысленным.