オブジェクトとクラス
特殊メソッド
マジックメソッドと呼ばれているところもある
これらのメソッドの名前は、先頭と末尾がダブルアンダースコアー
(__)になっている。こういうメソッドは今までにも登場している。
__init__()は、渡された引数うを使ってクラス定義から新しく作成された
オブジェクトを初期化する。
次のコードは、equals()と呼んでいるっ通常のメソッドを使った試みです。
class Word():
def __init__(self, text):
self.text = tsxt
def equals(self, word2):
return self.text.lower() == word2.text.lower()
そして、3つの異なる文字列から3個のWordオブジェクトを作る
first = Word('ha')
second = Word('HA')
third = Word('eh')
小文字に変換して比較すれば、等しいと見なされる
first.equals(second)
true
first.equals(third)
False
しかし、if first == second と書ければ便利です。
equals()メソッドを__eq__()という特殊名に変更する
class Word():
def __init__(self, text)
self.text = text
def __eq__(self, word2):
return self.txt.lower() == word2.text.lower()
うまく動作するかどうかを見てみよう。
first = Word('ha')
second = Word('HA')
third = Word('eh')
first == second
true
first == third
False
比較のための特殊メソッド
__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
算術計算のための特殊メソッド
__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