print() を使用してクラスのインスタンスを印刷するにはどうすればよいでしょうか? 質問する

print() を使用してクラスのインスタンスを印刷するにはどうすればよいでしょうか? 質問する

printクラスのインスタンスを作成しようとすると、次のような出力が得られます。

>>> class Test():
...     def __init__(self):
...         self.a = 'foo'
...
>>> print(Test())
<__main__.Test object at 0x7fc9a9e36d60>

printにカスタムのもの (たとえば、属性値を含むもの) が表示されるようにするにはどうすればよいでしょうか。つまり、クラスのインスタンスが印刷されたときにどのように表示されるか (その文字列表現)aをどのように定義すればよいでしょうか。


見るクラス自体(クラスのインスタンスではない)のカスタム文字列表現を選択するにはどうすればよいですか?クラス自体の動作を定義する場合(この場合は、や類似のprint(Test)ものではなく、カスタムのものが表示されます<class __main__.Test>)。 (実際、この手法は本質的には同じですが、適用するのがより複雑です。)

ベストアンサー1

>>> class Test:
...     def __repr__(self):
...         return "Test()"
...     def __str__(self):
...         return "member of Test"
... 
>>> t = Test()
>>> t
Test()
>>> print(t)
member of Test

__str__メソッドは、印刷時に呼び出されるものであり、__repr__方法とは、repr()関数(または対話型プロンプトで表示するとき)

メソッドが指定されていない場合__str__、Python は代わりに の結果を出力します__repr__。 を定義して__str__を定義しない場合__repr__、Python は上記の を として使用します__repr__が、__str__出力には を使用します。

おすすめ記事