簡體   English   中英

在Python中打印對象列表時如何應用__str__函數

[英]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但是它給出了相同的結果。

嘗試:

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]

參考文檔

object.__repr__(self)

repr()內置函數和字符串轉換(反引號)調用以計算對象的“正式”字符串表示形式。 如果可能的話,這應該看起來像一個有效的Python表達式,可以用來重新創建具有相同值的對象(在適當的環境下)。 如果這不可能,則應返回格式為<...some useful description...>的字符串。 返回值必須是一個字符串對象。 如果一個類定義了__repr__()而不是__str__() ,則當需要該類實例的“非正式”字符串表示形式時,也使用__repr__()

這通常用於調試,因此重要的是,表示形式必須信息豐富且明確。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM