← クエスト一覧

クエスト45:比較演算子のオーバーロード

スライド 1 / 6
コーデ
💻 コード例
実行結果
← クエスト一覧
🐍 Python / Quest 45 / 85

クエスト45:比較演算子のオーバーロード

発展 +10 XP
🏠
今回の課題
Score クラスに <(小なり)を定義して、2つの点数を比べ、低い方の値を表示しよう。
📖 解説を見る
⚖️ 比較演算子のオーバーロードって何?

__lt__(<)や __eq__(==)などを定義すると、自作クラス同士を <== で比べられるようになります。

✏️ 書き方:
class Card:
    def __init__(self, power):
        self.power = power
    def __lt__(self, other):
        return self.power < other.power

print(Card(3) < Card(7))
 → True
self が左側、other が右側です。定義しないと < はエラーになります。

📋 作るもの:
Score クラスに __lt__ というメソッドを追加する
・引数は selfother(比べる相手)の2つ
・自分の点数が相手の点数より小さいかを True / Falsereturn する
・点数は self.valueother.value で取り出せる

💡 どこで使う?

自作クラスを「大小で比べたい」ときに使います。カードの強さ、バージョン番号、スコアなどを < で比較でき、sorted()min() もそのまま使えるようになります。オブジェクトを並べ替えたいときの土台です。

⚠️ ポイント:
__lt__(self, other) は「self < other」のときの動きを決める
True / False を返す
ヒントを見る
__lt__(self, other) は「self < other」と書かれたときに呼ばれるよ。自分と相手の value を比べた結果(True / False)を、そのまま return しよう。
期待する出力
80
📄 見本
「答えを見る」を押すと、お手本のコードが出ます。クリックでコピーできます。
💻 コードエディタ
実行すると結果がここに表示されます
正解!見本と同じになりました。
次へ →
🏠 ホームへ

れんしゅうもんだい

☑ 0 / 3 正解 レッスンに戻る

全問正解でクエストクリア!

未挑戦

問題 1: Vector クラスに __add__ を実装して Vector(1,2) + Vector(3,4) を「Vector(4, 6)」と表示しよう!

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
Vector(4, 6)
未挑戦

問題 2: Box クラスに __eq__ を実装して、幅と高さが同じなら True を表示しよう!

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
True
未挑戦

問題 3: Point クラスに __len__ でマンハッタン距離(|x|+|y|)を返すよう実装して len(Point(3, 4)) を表示しよう!

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
7
コピーしました!