用python进行运算符重载的方法是什么?
Admin 2021-08-19 群英技术资讯 677 次浏览
这篇文章给大家分享的是有关python进行运算符重载的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,有需要的朋友可以参考,接下来一起跟随小编看看吧。
python进行有理数运算时,希望用运算符(+ - * /)描述计算过程。只是用来写出更加自然的计算表达式。为此,python为所有算数运算符规定了特殊方法名。其中所有特殊的名字都以两个下划线开始,并以两个下划线结束,即:
当在Python中输入“a+b”时,程序发现使用了“+”运算符,因此就会调用“__add__”方法。
此时,若对自定义类中进行运算符的重载,则可以实现对类的打印、有理数运算等等。
class Size: def __init__(self, value): self._value = value def value(self): return self._value def __lt__(self, another): #由于 < 是一个二元运算符,因此会有 anothoer这一项的存在 cc = self.value() > another.value() return self.value() > another.value() # def __gt__(self, another): # gg = self._value < another.value() # return self._value < another.value() def __eq__(self, another): return self.value() == another.value() def __str__(self): return str(self.value()) a=Size(3) b=Size(2) print(a,b,a>b)
进行调试时,尽管没有对“>”运算符(对应的魔法方法是“__gt”)进行重载,但是运算到
print(a,b,a>b)
时,程序并不会报错,且仍然会调用重载后的"__lt__"。我个人理解是因为Python自动将“a>b”看成是“b<a”。若此时重载了“__gt__”,则程序不会去调用“__lt__”了。
补充:python中的运算符与表达式
Python是面向对象的编程语言,在Python中一切都是对象。对象由数据和行为两部分组成,而行为主要通过方法来实现,通过一些特殊方法的重写,可以实现运算符重载。
运算符也是表现对象行为的一种形式,不同类的对象支持的运算符有所不同,同一种运算符作用于不同的对象时也可能会表现出不同的行为,这正是“多态”的体现。
在Python中,单个常量或变量可以看作最简单的表达式,使用除赋值运算符之外的其他任意运算符和函数调用连接的式子也属于表达式
运算符优先级遵循的规则为:算术运算符优先级最高,其次是位运算符、成员测试运算符、关系运算符、逻辑运算符等,算术运算符遵循“先乘除,后加减”的基本运算原则。
虽然Python运算符有一套严格的优先级规则,但是强烈建议在编写复杂表达式时使用圆括号来明确说明其中的逻辑来提高代码可读性
(1)+运算符除了用于算术加法以外,还可以用于列表、元组、字符串的连接,但不支持不同类型的对象之间相加或连接。
(2)*运算符除了表示算术乘法,还可用于列表、元组、字符串这几个序列类型与整数的乘法,表示序列元素的重复,生成新的序列对象。字典和集合不支持与整数的相乘,因为其中的元素是不允许重复的。
(3)运算符/和//在Python中分别表示算术除法和算术求整商(floor division)
(4)%运算符可以用于整数或实数的求余数运算,还可以用于字符串格式化,但是这种用法并不推荐。
(5)**运算符表示幂乘
以上就是关于python进行运算符重载的介绍,希望对大家学习和理解python运算符重载有帮助,想要了解更多python运算符重载的内容,大家可以关注其他相关文章。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要为大家介绍了python神经网络MobileNetV3 large模型的复现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
大家好,本篇文章主要讲的是python3基础之集合set详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
在matplotlib.pyplot中除了可以绘制常规图表如折线、柱状、散点等,还可以绘制常用在地理上的平面展示地型的等高线图,本文主要为大家介绍了如何利用matplotlib绘制等高线图,需要的可以参考一下
python命令行传参有哪些方法?很多新手对于python命令行传参的方法可能不是很了解,这篇文章就主要给大家分享python命令行传参的方法,对新手学习有一定的借鉴价值,感兴趣的朋友可以参考一下,下面我们一起来学习吧。
这篇文章给大家分享的是有关python描述符的内容,描述符是Python中比较基础的内容,大家是需要掌握的,下文会给大家具体介绍描述符定义、描述符的种类和优先级和应用等等,感兴趣的朋友可以参考参考。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008