初心者のためのpython入門

自分がつまづいたところやつまづきやすいところを中心に書いていきます。また、役に立つライブラリの紹介などをしていきます。

特殊メソッド

特殊メソッド

前回クラスの中で__init__()メソッドを定義しました。__init__()メソッドは、渡された引数を使い、クラス定義から新しく作成されたオブジェクトを初期化する特殊メソッドです。今回は__init__()メソッド以外の特殊メソッドについて説明したいと思います。

特殊メソッドの命名規則

特殊メソッドは名前の先頭と末尾が__(ダブルアンダースコア)で囲まれています。

比較のための特殊メソッド

比較のための特殊メソッドは以下の表のようになります。

メソッド 意味
__eq__(self, other) self == other 等しい
__ne__(self, other) self != other 等しくない
__lt__(self, other) self < other より小さい
__gt__(self, other) self > other より大きい
__le__(self, other) self <= other 以下
__ge__(self, other) self >= other 以上

それでは使い方を見ましょう。

# sample.py
class Word():
    def __init__(self, text):
        self.text = text

    def __eq__(self, input_text): # input_textとは他のWordクラスのオブジェクト
        return self.text.lower() == input_text.text.lower()

sample1 = Word('Hello')
sample2 = Word('hello')
sample3 = Word('goodbye')
print("Hello" == "hello")
print(sample1 == sample2)
print(sample2 == sample3)
# 実行結果 (python sample.py)
False
True
False

上記の結果を見て分かるように、クラス内で__eq__()メソッドを定義したことにより"=="の条件判定を書き換えることかできました。通常の場合は文字列の比較は大文字と小文字を区別しますが、特殊メソッドを実装することにより、その比較の方法を変更しています。他のメソッドについても同様に扱うことができます。

算術演算のための特殊メソッド

算術演算のための特殊メソッドです。

メソッド 意味
__add__(self, other) self + other 加算
__sub__(self, other) self - other 減算
__mul__(self, other) self * other 乗算
__floordiv__(self, other) self // other 除算
__truediv__(self, other) self / other 除算
__mod__(self, other) self / other あまり
__pow__(self, other) self % other 冪乗

使い方は比較演算子の例とほとんど同じです。自分で何か実装してみてください!

その他の特殊メソッド

これらの他にも様々な特殊メソッドが存在しますが、今のところ触れる必要のあるものは特にありません。上記で説明した特殊メソッドについても、そんなものがあるんだ程度に覚えていれば問題ないです。自分で本格的にプログラムを書くようになり、必要になったら詳しく学びましょう。

最後に

お疲れ様でした。今回は蛇足的な説明です。次回は、カプセル化について説明します。カプセル化オブジェクト指向において重要な概念です。