1. Learn
  2. /
  3. Courses
  4. /
  5. Python によるオブジェクト指向プログラミング

Connected

Exercise

等価演算子のオーバーロード

カスタムクラスの2つのオブジェクトを == で比較すると、Python はデフォルトではオブジェクトの参照だけを比較し、オブジェクトに含まれるデータは比較しません。この挙動を上書きするには、クラスで特別メソッド __eq__() を実装します。これは2つの引数(比較するオブジェクト)を受け取り、True または False を返します。2つのオブジェクトが比較されると、このメソッドが暗黙的に呼び出されます。

前の章で扱った BankAccount クラスがスクリプトペインに用意されています。属性は balance が1つと、withdraw() メソッドがあります。同じ残高でも口座自体が同一とは限りませんが、銀行口座には通常「口座番号」があり、口座番号が同じであれば同じ口座と見なすべきです。

Instructions

100 XP

まずは1〜7行目のコードを選択して「"Run code"」ボタンを押してみてください。続いて、コンソールでいくつかの BankAccount オブジェクトを作成し、比較してみましょう。

  • __init__() メソッドを修正して、新しい引数 number を受け取り、新しい属性 number を初期化します。
  • 2つのオブジェクトの number 属性が等しければ True を返す __eq__() メソッドを定義します。
  • print 文とコンソールの出力を確認してください。