[python]クラス.__str__メソッドで全フィールドを列挙する方法

python-str-all-fields

Javaで言うところのtoStringであるpythonの__str__メソッドはformat()print()で使用した場合に呼ばれます。
クラスインスタンスの全フィールドを表示したいことがあります。その方法をご紹介します。

環境

Python 3.8.5

結論

__dict__を使用します。

サンプルコード

from datetime import date


class Hoge:
    def __init__(self, text, num, date):
        self.text = text
        self.num = num
        self.date = date

    def __str__(self):
        return str(self.__dict__)


h = Hoge(text='hoge_text', num=123, date=date.today())
print(h)

実行結果

{'text': 'hoge_text', 'num': 123, 'date': datetime.date(2020, 12, 1)}

参考

https://docs.python.org/ja/3/reference/datamodel.html#object.str

コメントを残す

メールアドレスが公開されることはありません。