概要
__repr__()
を実装すればdisplay()
の出力を定義できます。
環境
- Python 3.7.11
- jupyter-notebook 5.2.2
Google Clolabを用いました。
Jupyterの出力
jupyterは、セルの最後の式の評価値を出力として表示します。これは、内部的にはIPython.display.display()
と同じ挙動をしています。
# Jupyterでない純粋なPythonの場合はimportが必要
from IPython.display import display
hoge = "ほげ"
display(hoge) #=> 'ほげ'
display()
はprint()
とは若干異なります。Jupyterでの実行結果は下記のようになります。
出力を自前で定義する方法
自前で定義したクラスなどでは、そのままではあまり有用な出力が得られません。
display()
の内部では__repr__()
を呼んでいるため、これを実装すると好きな出力を得ることができます。なお同様にprint()
では__str__()
が呼ばれています。
class MyClass2:
def __init__(self, name: str):
self.name = name
def __str__(self):
return "<str:{}>".format(self.name)
def __repr__(self):
return "<repr:{}>".format(self.name)
参考
__str__()
と__repr__()
の違いや実装時の注意点等は、下記公式ドキュメント等を参考にしてください。