pythonクラスの演算子およびリロード

3766 ワード

一般的に、1つのクラスが計算できるのは、add(プラス)、sub(マイナス)などのメソッドが組み込まれているためです.呼び出し+、-の場合、実際に呼び出されるのはaddです.subメソッドは、クラスの属性に対して演算を行う場合、通常、このようにします.たとえば、クラスを定義します.
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のオブジェクト向けの理解と、クラスのいくつかのマジック方法、内蔵演算子の理解を深めることができます.