【python提高】01-运算符的重载

一直认为运算符 ±*/ > < = 是int才有的专利,但是发现只要在类中重写
__add__ __gt__等魔法函数,也可以进行相应的±><运算。

看一下int里面的函数

>>> help(int)
Help on class int in module builtins:
Methods defined here:
# 实现 a+b
__add__(self, value, /)
	Return self+value.
# 实现 a<b
__lt__(self, value, /)
	Return self<value.
# 其余的都差不多, 大家写之前看一下好了

代码实现运算符重载



class Foo():
    def __init__(self, num):
        self.num = num

    # a+b
    def __add__(self, value):
        num_sum = self.num+value.num
        return num_sum

    # a-b
    def __sub__(self, value):
        num_sub = self.num - value.num
        return num_sub
    
    # a*b
    def __mul__(self, value):
        num_mul = self.num*value.num
        return num_mul

    # a/b
    def __truediv__(self, value):
        num_truediv = self.num/value.num
        return num_truediv

    # a=b
    def __eq__(self, value):
        if self.num == value.num:
            return True
        return False

    # a>b
    def __gt__(self, value):
        if self.num > value.num:
            return True
        return False

    # a<b
    def __lt__(self, value):
        if self.num < value.num:
            return True
        return False
    

a = Foo(4)
b = Foo(2)

print(a+b)
print(a-b)
print(a*b)
print(a/b)
print(a == b)
print(a>b)
print(a<b)

# 运行结果
>>> 
6
2
8
2.0
False
True
False
>>> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值