pythonクラスの演算子およびリロード
3766 ワード
一般的に、1つのクラスが計算できるのは、add(プラス)、sub(マイナス)などのメソッドが組み込まれているためです.呼び出し+、-の場合、実際に呼び出されるのはaddです.subメソッドは、クラスの属性に対して演算を行う場合、通常、このようにします.たとえば、クラスを定義します.
2つのオブジェクトをインスタンス化
ここでは2つのオブジェクトの年齢を加算する必要があります.
しかし、もし私たちがクラスでaddなどの方法を定義したら:このように
はい、私たちは直接クラスを加算することができますが、実際の応用ではこの騒ぎはあまり役に立ちませんが、私たちのチームpythonのオブジェクト向けの理解と、クラスのいくつかのマジック方法、内蔵演算子の理解を深めることができます.
class Programer(object):
def __init__(self, name, age):
self.name = name
self.age = age
2つのオブジェクトをインスタンス化
a = Programer("renyi", 25)
b = Programer("huanghuan", 26)
ここでは2つのオブジェクトの年齢を加算する必要があります.
print(a.age + b.age)
しかし、もし私たちがクラスでaddなどの方法を定義したら:このように
class Programer(object):
def __init__(self, name, age):
self.name = name
self.age = age
def __eq__(self, other):
if isinstance(other, Programer):
if self.age == other.age:
return True
else:
return False
else:
raise Exception("The type of object must be Programer")
def __add__(self, other):
if isinstance(other, Programer):
return self.age + other.age
else:
raise Exception("The type of object must be Programer")
def __sub__(self, other):
if isinstance(other, Programer):
return self.age - other.age
else:
raise Exception("The type of object must be Programer")
if __name__ == "__main__":
a = Programer("renyi", 25)
b = Programer("huanghuan", 25)
print(a + b)
print(a == b)
print(a - b)
はい、私たちは直接クラスを加算することができますが、実際の応用ではこの騒ぎはあまり役に立ちませんが、私たちのチームpythonのオブジェクト向けの理解と、クラスのいくつかのマジック方法、内蔵演算子の理解を深めることができます.