[python] __repr__と__str__の違い

Referenceによると以下の通り。

__str__(self)

  • オブジェクトの「非公式の (informal)」あるいは表示に適した文字列表現を計算するために呼ばれる
  • str(object) と組み込み関数 format(), print() によって呼ばれる

__repr__(self)

  • オブジェクトを表す「公式の (official)」文字列を計算するために呼ばれる
  • repr()によって呼び出される
  • __repr__() を定義していて __str__() は定義していなければ、strが呼び出されるべき関数もreprが呼ばれる

class Item(object):
    def __init__(self, obj, key):
        self.obj = obj
        self.key = key

    def __repr__(self):
        return 'repr: '+ str(self.obj) + ': ' + str(self.key)

    def __str__(self):
        return 'str : ' + str(self.obj) + ': ' + str(self.key)


item = Item('a', 5)

print(item)
>> str : a: 5

print(repr(item))
>> repr: a: 5
このエントリーをはてなブックマークに追加
Takatomo Honda avatar
About Takatomo Honda
システム開発 / プロトタイプ開発 / 開発組織の構築 / アプリケーションの内製化 /等、お気軽にご相談ください。