pythonクラスの__str__と__repr__
クラスを作成したら__str__と__repr__を実装する。
__str__はstr()で呼び出した時や、print()で呼び出した時に実行される。人間にとって読みやすいようにフォーマットする。
__repr__はrepr()で呼び出した時や、インタラクティブなシェルでインスタンス名を入力したときに実行される。eval()で再利用可能な形式でフォーマットする。
class MyClass:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return '[{0}({1})]'.format(self.name, self.age)
def __repr__(self):
return "MyClass('{0}','{1}')".format(self.name, self.age)
user01 = MyClass('John Doe', 35)
print(user01)
str(user01)
repr(user01)
user01
これで、
[John Doe(35)]
[John Doe(35)]
MyClass('John Doe','35')
MyClass('John Doe','35')
と出力される。
repr()が実装されているので、evalを呼び出すこともできる。
user02 = eval(repr(user01))
print(user02)
ちなみに、__str__と__repr__を実装しないとprintしたときに
のように出力される。
デバッグのしやすさから考えると、どちらも実装しておいた方が良い。
- BOM付きUTF-8からBOMを除去するpython
- jythonのヒープメモリ設定
- Kotlin1.2.50がリリースされていた
- macOSをHigh Sierraに更新した。スクリプト実行環境のバージョンは変わったのか
- macOSをMojaveに更新した。スクリプト実行環境のバージョンは変わったか
- pathlib.Pathを調べる
- pyenvでpython環境をインストール
- pyenvとvirtualenvでpython環境を構築
- python unpack
- python3で数値のlistを文字列のlistに変換
コメントを残す