__repr__
リッパー(関数とクラス)
意味 開発者向け表現
__repr__とは?
オブジェクトの開発者向け表現を返す特殊なメソッド。`__str__`メソッドと似ていますが、`__repr__`はオブジェクトの内部構造をより詳細に表現することを目的としています。主にデバッグなどで役立ちます。
__repr__の具体的な使い方
eval()での再現性を考慮した実装
import datetime
class Meeting:
def __init__(self, title, date):
self.title = title
self.date = date
def __repr__(self):
return f'Meeting(title={self.title!r}, date=datetime.date({self.date.year}, {self.date.month}, {self.date.day}))'
meeting = Meeting('プロジェクト会議', datetime.date(2023, 5, 15))
print(repr(meeting))
# eval()で再現
reproduced = eval(repr(meeting))
print(f'元のオブジェクト: {meeting}')
print(f'再現したオブジェクト: {reproduced}')
print(f'同一オブジェクト?: {meeting == reproduced}')
👇出力結果
Meeting(title='プロジェクト会議', date=datetime.date(2023, 5, 15))
元のオブジェクト: Meeting(title='プロジェクト会議', date=datetime.date(2023, 5, 15))
再現したオブジェクト: Meeting(title='プロジェクト会議', date=datetime.date(2023, 5, 15))
同一オブジェクト?: False
Meetingクラスを定義し、__repr__メソッドでeval()関数で評価した際に元のオブジェクトと同等のオブジェクトを生成できる文字列を返すように実装しています。repr()関数を使用して__repr__の出力を確認し、さらにeval()関数を使って再現性をテストしています。
デバッグ情報の提供
class ComplexNumber:
def __init__(self, real, imag):
self.real = real
self.imag = imag
def __repr__(self):
return f'ComplexNumber(real={self.real}, imag={self.imag})'
def __str__(self):
return f'{self.real} + {self.imag}i'
numbers = [ComplexNumber(1, 2), ComplexNumber(3, -4)]
print('デバッグ情報:')
print(repr(numbers))
print('\n通常の表示:')
for num in numbers:
print(num)
👇出力結果
デバッグ情報:
[ComplexNumber(real=1, imag=2), ComplexNumber(real=3, imag=-4)]
通常の表示:
1 + 2i
3 + -4i
ComplexNumberクラスを定義し、__repr__メソッドでデバッグ用の詳細な情報を、__str__メソッドで通常表示用の簡潔な情報を返すように実装しています。repr()関数を使用してデバッグ情報を表示し、通常のprint文で__str__の出力を確認しています。
__repr__に関するよくある質問
__repr__が学べる書籍の紹介
「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、Pythonの__repr__や__iter__、__len__、__enter__、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。
よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。
HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。
Pythonを学べる「プログラミング単語帳」アプリ
プログラミング単語帳がアプリになりました!Pythonはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。
収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。
いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。
2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!
2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!