クラス内で
__eq__
という関数を作り、引数を設定すると
異なるインスタンスのその引数を比較できる
class aClass():
def __init__(self,name):
self.name = name
def __eq__(self,name2):
return self.name == name2
ob01 = aClass('Bob')
ob02 = aClass('Mike')
print(ob01 == ob02)
ob02 = aClass('Bob')
print(ob01 == ob02)
aCalssというクラスを以下に定義
コンストラクタを以下に定義する(引数name)
self.nameにname(引数のname)を入れる
__eq__関数を以下に定義(引数はname2)
self.nameとname2を比較して関数の戻り値にする
ob01をクラスaClassのインスタンスとする、引数はBob
ob02をクラスaClassのインスタンスとする、引数はMike
ob01とob02の戻り値が等しいか比較:Flase
ob02をクラスaClassのインスタンスとする、引数はBob
ob01とob02の戻り値が等しいか比較:True
False
True
__eq__でなく、自分で勝手に作った名前の関数を入れて同じことをやると結果が間違う
しかし覚えるのが面倒なら、異なるインスタンスの値を普通に出して比較してもいい
ob01 = aClass('Bob')
ob02 = aClass('Mike')
print(ob01.name == ob02.name)
こんな書き方もある、というくらいもの