解决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)**运算符表示幂乘
(资源库 www.zyku.net)
原文链接:https://blog.csdn.net/qq_38308533/article/details/79934693
上一篇:python 利用PyAutoGUI快速构建自动化操作脚本
栏 目:Python教程
下一篇:SecureCRTSecure7.0查看连接密码的步骤
本文标题:解决Python运算符重载的问题
本文地址:https://www.zyku.net/python/9793.html
您可能感兴趣的文章
- 11-21PHP运算符
- 10-09PiPifier设置画中画教程介绍
- 09-19小米手表color运动版绑定微信教程介绍
- 12-01spotify分享到朋友圈教程介绍
- 10-10vivox70pro+如何截屏
- 11-10小米手机飞行模式在哪里
- 11-16apple store删除收藏商品方法介绍
- 10-20米游社默认角色如何设置
- 07-09concrete5安装教程图解
- 12-23iwatch6开启心电图方法介绍
- 02-17vivox60pro自拍补光功能开启方法
- 08-05宝塔Linux面板定时备份网站数据至七牛
- 04-01红米k40返回键更改位置操作方法
- 08-09织梦dedecms百度快照劫持注入代码防范
- 10-27苹果13显示电量百分比方法分享
- 09-21微博创建作品合集教程介绍
- 12-30智子围棋-智子围棋应用软件功能介绍
- 09-30将网页内容转化为PDF的三种方法
- 09-19小米空调如何重置wifi
- 12-14华为p50如何关闭高清通话
最近更新
阅读排行
猜你喜欢
- 01-11十字绣绘画-十字绣绘画应用软件功能介
- 01-09vivos12设置充电动画教程分享
- 07-05Linux dd命令
- 01-12腾格里新闻-腾格里新闻应用软件功能介
- 08-02SSL证书.key转.pem的方法
- 10-04厚墨添加书签步骤分享
- 01-29红米note9pro防误触模式开启步骤
- 01-13dedecms列表页调用文章正文内容的方法
- 12-27城小班司机端-城小班司机端应用软件功
- 07-18小米手机设置轻敲背部方法分享