Python repr() ビルトイン関数

Python 3 ドキュメントより

オブジェクトの印字可能な表現を含む文字列を返します。多くの型について、この関数は `eval()` に渡されたときに同じ値を持つオブジェクトを生成するような文字列を返そうとします。そうでない場合、表現はオブジェクトの型名と、多くの場合オブジェクトの名前とアドレスを含む追加情報を含む山括弧で囲まれた文字列になります。クラスは、`__repr__()` メソッドを定義することで、そのインスタンスに対してこの関数が返すものを制御できます。

導入

repr() 関数は、オブジェクトの印字可能な表現を含む文字列を返します。repr() の目的は曖昧さがないことです。多くの型について、repr()eval() によって実行されて同一のオブジェクトを作成できる文字列を返します。

これは、人間が読めることを意図している str() とは異なります。

import datetime

# 文字列の場合、repr() は引用符を追加します
print(repr("hello"))

# datetime オブジェクトの場合、曖昧さがありません
now = datetime.datetime.now()
print(repr(now))

# 独自のクラスに対して __repr__ を定義できます
class Person:
    def __init__(self, name):
        self.name = name

    def __repr__(self):
        return f"Person(name='{self.name}')"

p = Person("John")
print(repr(p))
'hello'
datetime.datetime(2023, 10, 27, 10, 0, 0, 123456)
Person(name='John')

関連リンク