python中比较运算符用于比较两个数_Python中让两个对象像数字一样运算

本文介绍了Python中的运算符重载,允许开发者自定义类的加减乘除等运算。通过实现类中的__add__、__sub__等内置方法,我们可以按照自己的逻辑定义运算行为。例如,创建一个Circle类,重载加法运算使得两个圆相加即为它们面积的总和。此外,还讨论了不同类型的对象如何进行运算以及处理潜在的类型错误。运算符重载提高了代码的简洁性和可读性。
摘要由CSDN通过智能技术生成

小伙伴们看到这个题目应该有一丝丝的疑惑,一般不都是数字做运算吗?怎么,两个对象也可以放到一起做运算吗?那可不,今天,我们就一起来看看怎么让两个对象做运算。在这里,我们要使用一个非常强大的功能,叫做运算符重载。

什么是运算符重载呢?要解释这个,我们先要来看一下什么是运算符、

运算符,顾名思义,就是用于运算的符号。Python中的运算符有算术操作符、比较操作符、逻辑操作符等等,想要详细的小伙伴,可以参考我们之前的文章,Python中的运算符。一般这些运算符都是用于数学运算,这个小伙伴们应该很熟悉啦,比如下面这个例子。

我们说过,Python中一切皆为对象。实际上呢,这里的a和b都是int类型的,也就是说它们是int类的实例。

而这里我们看到的运算符,加号,减号,乘号,是由int类中的内置方法__add__,__sub__,__mul__等决定的,这些函数决定了我们在使用运算符时的具体操作。同样,在double、complex等数字类型中也是有这些内置函数的。

那么,在一个我们自己定义的类里面,一旦我们定义好了这些函数,能不能实现自定义类的加减乘除等运算呢?当然可以~这就是我们说的运算符重载。

所以说,运算符重载,就是说我们自己实现类中与相应运算符对应的内置方法。那么,这些内置方法长什么样呢?我们来看看最常见的算术运算符重载

这里的rhs表示运算符右边的对象,用其它名称也是可以的,看自己的习惯。有小伙伴可能好奇,为什么这里是truediv,真正的除法,这是为了和整除区分开。

我们来看一个简单的例子。

在这里,我们定义了一个Circle类,它只有一个属性就是半径radius。这里我们实现了__add__方法。为了解释运算符重载的最用,我们做了一个有意思的假定:两个圆加在一起是它们的面积相加。这里我们用到了一点点数学知识,第7行到第10行,我们求出两个圆的面积,把它们加起来得到新圆的面积,然后再求出新圆的半径。这就是我们定义的加法运算符。

我们也重载了__str__方法,这样我们在打印Circle类的实例时,可以按照第13行的格式输出。

小伙伴们看看结果,一个半径为5的圆和一个半径为6的圆,加到一起,得到了一个半径为7.81的圆。

这就是运算符重载的作用:让我们可以按照自己的想法去实现自定义类型的各种运算操作,让程序更加简洁易读。

这时候有小伙伴们可能就好奇了,两个对象做运算,必须是同一个类型的对象吗?

这个也不一定,右边的rhs也可以是别的类型。但是大多时候都是一样的类型,因为这时候的含义比较明确,就是两个同一自定义类型的运算。

如果想要尝试不同类型的话,运算符对应的内置方法必须要做好类型的处理,不然会报错。

比如我们想通过乘法让圆的半径加3,直接new_circle=circle1+3就会报错。

那这时候可以怎么办呢?我们需要在__add__方法中对rhs的类型进行判断,然后处理

当rhs类型是Circle的时候,和之前的处理一样,当rhs类型是int或者float的时候,直接给半径加上对应的数。我们来看看结果

这样就可以正常给圆加上一个半径值了。

所以说,在使用运算符重载的时候,一定要正确编写对应内置方法的代码,不然很容易报错哦~

结束语

今天给小伙伴们介绍了Python中的运算符重载,这是一个非常实用的功能,通过在类中定义运算符重载,我们展现在外部的代码可以更加简洁,程序的易读性也大大增强,所以,快点动手学起来吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值