python 类的运算符及重载

一般来说,一个类能够计算,是因为内置了add(加),sub(减)等方法
当调用+,-的时候,其实调用的就是add,sub方法
当我们相对类的属性进行运算时,通常会这样:
比如我们定义一个类

class Programer(object):

    def __init__(self, name, age):
        self.name = name
        self.age = age

实例化两个对象

a = Programer("renyi", 25)
b = Programer("huanghuan", 26)

这里我们需要对两个对象的年龄进行相加会这样

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面向对象的理解,以及类的一些魔术方法,内置运算符的理解

猜你喜欢

转载自blog.csdn.net/renyiforever/article/details/79732572