1. ホーム
  2. python

[解決済み] str__と__repr__は何のためにあるのですか?重複

2023-03-17 21:06:13

質問

私は本当に理解できないのですが __str____repr__ がPythonで使われている。つまり、私は __str__ はオブジェクトの文字列表現を返すということはわかります。しかし、なぜそれが必要なのでしょうか?どのようなユースケースのシナリオで?また、私は __repr__

しかし、私が理解していないことは、私はそれらを使用する場所ですか?

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

__repr__

によって呼び出される。 repr() 内蔵関数や文字列変換(逆引用符)によって呼び出され、オブジェクトの "公式"文字列表現を計算します。可能な限り、これは同じ値でオブジェクトを再作成するために使用できる有効なPython式のように見えるべきです(適切な環境が与えられると)。

__str__

によって呼び出される。 str() 組み込み関数とprintステートメントによって呼び出され、オブジェクトの"informal"文字列表現を計算します。

使用方法 __str__ は、クラスがあり、このオブジェクトを文字列の一部として使用するときはいつでも、情報的/非公式な出力が必要な場合に使用します。例えば、以下のように定義することができます。 __str__ メソッドを定義し、それを Django の管理インターフェイスでレンダリングすることができます。のようなものの代わりに <Model object> の代わりに、人の姓名、イベントの名前と日付などを取得します。


__repr__ そして __str__ は類似しており、実際には同等であることもあります(例として BaseSet のクラスは sets.py を標準ライブラリから取得)。

def __repr__(self):
    """Return string representation of a set.

    This looks like 'Set([<list of elements>])'.
    """
    return self._repr()

# __str__ is the same as __repr__
__str__ = __repr__