![](/img/trans.png)
[英]__str__(self) function not working for printing objects in Python
[英]How to apply __str__ function when printing a list of objects in Python
好了,這個交互式的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
但是它給出了相同的結果。
其他答案中建議實施__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]
參考文檔 :
object.__repr__(self)
由
repr()
內置函數和字符串轉換(反引號)調用以計算對象的“正式”字符串表示形式。 如果可能的話,這應該看起來像一個有效的Python表達式,可以用來重新創建具有相同值的對象(在適當的環境下)。 如果這不可能,則應返回格式為<...some useful description...>
的字符串。 返回值必須是一個字符串對象。 如果一個類定義了__repr__()
而不是__str__()
,則當需要該類實例的“非正式”字符串表示形式時,也使用__repr__()
。這通常用於調試,因此重要的是,表示形式必須信息豐富且明確。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.