如何在Python中打印对象列表时应用__str__函数

dvi*_*vim 30 python printing string list object

那么这个交互式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]
Run Code Online (Sandbox Code Playgroud)

基本上我想asd在打印列表时打印三个字符串.我也试过,pprint但它给出了相同的结果.

gru*_*czy 41

尝试:

class Test:
   def __repr__(self):
       return 'asd'
Run Code Online (Sandbox Code Playgroud)

并阅读此文档链接:


Ale*_*lli 9

其他实施答案中的建议__repr__绝对是一种可能性.如果由于某种原因(现有类型,__repr__除了审美之外的其他原因需要)那是不可行的,那么就这样做

print [str(x) for x in l]
Run Code Online (Sandbox Code Playgroud)

或者,正如一些人肯定建议的那样map(str, l)(只是更紧凑).