如何在Python中打印对象列表时应用__str__函数
那么这个交互式的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]
基本上我打印列表时打印三个string。 我也尝试过pprint
但它给出了相同的结果。
尝试:
class Test: def __repr__(self): return 'asd'
并阅读这个文档链接 :
其他答案中的build议__repr__
肯定是一种可能性。 如果由于某种原因(现有types, __repr__
由于美学以外的原因而需要)等是不可行的,那么只要
print [str(x) for x in l]
或者像某些人一定会build议的那样, map(str, l)
(只是更简洁一些)。
你需要做一个__repr__
方法:
>>> class Test: def __str__(self): return 'asd' def __repr__(self): return 'zxcv' >>> [Test(), Test()] [zxcv, zxcv] >>> print _ [zxcv, zxcv]
请参阅文档 :
object.__repr__(self)
由
repr()
内置函数和string转换(反引号)调用来计算对象的“官方”string表示forms。 如果可能的话,这应该看起来像一个有效的Pythonexpression式,可以用来重新创build一个具有相同值的对象(给定一个合适的环境)。 如果这是不可能的,应该返回一个<...some useful description...>
forms的string。 返回值必须是一个string对象。 如果一个类定义了__repr__()
而不是__str__()
,则当需要该类的实例的“非正式”string表示时,也会使用__repr__()
。这通常用于debugging,因此重要的是表示信息丰富和明确。