1. ホーム
  2. python

[解決済み] print()を使用してクラスのインスタンスを表示するには?

2022-03-14 19:42:54

質問

Pythonの勉強をしています。のオブジェクトを表示しようとすると Foobar を使用して print() 関数を使用すると、次のような出力が得られます。

<__main__.Foobar instance at 0x7ff2a18c>

を設定する方法はありますか? 印刷動作 (または 文字列表現 を使用します)。 クラス とその オブジェクト ? 例えば、私が print() クラスオブジェクトのデータメンバを特定のフォーマットで表示したい。Pythonでこれを実現するにはどうしたらよいでしょうか?

C++のクラスに慣れていれば、上記は標準的な ostream を追加することで friend ostream& operator << (ostream&, const Foobar&) というメソッドがあります。

どのように解決するのですか?

>>> 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__ を印刷することができます。