このインタラクティブな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]
基本的に、リストを印刷するときに3つのasd
文字列を印刷したいと思います。 pprint
も試しましたが、同じ結果が得られます。
___repr__
_を実装するための他の回答の提案は、間違いなく1つの可能性です。何らかの理由(既存のタイプ、美的以外の理由で必要な___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]
_
docs を参照してください:
object.__repr__(self)
repr()
組み込み関数および文字列変換(逆引用符)によって呼び出され、オブジェクトの「公式」文字列表現を計算します。可能であれば、これは有効なPython式のようになり、同じ値でオブジェクトを再作成するために使用できます(適切な環境が与えられた場合)。これが不可能な場合は、次の文字列_<...some useful description...>
_の形式を返す必要があります。戻り値は文字列オブジェクトである必要があります。クラスが__repr__()
を定義しているが__str__()
を定義していない場合、__repr__()
はそのクラスのインスタンスの「非公式」文字列表現が必要な場合にも使用されます。これは通常、デバッグに使用されるため、表現が情報が豊富で明確であることが重要です。