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

在Python中打印对象列表时如何应用_str__函数,python,list,object,printing,string,Python,List,Object,Printing,String,这个交互式python控制台代码片段将告诉我们一切: >>> class Test: ... def __str__(self): ... return 'asd' ... >>> t = Test() >>> print(t) asd >>> l = [Test(), Test(), Test()] >>> print(l) [__main__.Test instance at 0

这个交互式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
,但它给出了相同的结果。

尝试:

class Test:
   def __repr__(self):
       return 'asd'

阅读以下内容:

您需要创建一个
\uuuu repr\uuu
方法:

>>> class Test:
    def __str__(self):
        return 'asd'
    def __repr__(self):
        return 'zxcv'

    
>>> [Test(), Test()]
[zxcv, zxcv]
>>> print _
[zxcv, zxcv]
请参阅:

object.\uuuuu repr\uuuuuuuuu(self)
repr()
内置函数和字符串转换(反向引号)调用,以计算对象的“正式”字符串表示形式。如果可能的话,这应该看起来像一个有效的Python表达式,可以用来重新创建具有相同值的对象(给定适当的环境)。如果这是不可能的,则应返回格式为
的字符串。返回值必须是字符串对象。如果一个类定义了
\uuuu repr\uuuu()
而不是
\uu str\uuuu()
,那么当需要该类实例的“非正式”字符串表示时,也会使用
\uuuuuu repr\uuuu()

这通常用于调试,因此表示信息丰富且明确是很重要的


其他答案中关于实施<代码>的建议肯定是一种可能性。如果出于任何原因(现有类型,
\uuuu repr\uuuu
出于美学以外的原因,等等)而不可行,那么就这样做吧

print [str(x) for x in l]

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

从回答中提供的文档来看,如果使用repr,我似乎不需要str定义。谢谢你的意见。@Blink\ux:这取决于你到底想要什么。使用我定义的类,将
print Test()
的输出与
print[Test()]
进行比较。