python3代码中实现加法重载的实例


Posted in Python onDecember 03, 2020

我们想要知道数目的总和,只要通过+就能实现,这是我们在做题上经常用到的符号。但是在python中不能直接使用,我们需要借助一些代码或者函数帮助我们实现对象的相加。那么实现加法需要用到什么呢?小编在这里跟大家讲讲操作符重载,可能有些人听到这个很长的词比较陌生,我们继续往下深入学习。

Python支持操作符重载。“操作符重载”其实是个简单的概念,你是否曾经想过为什么Python可以让你使用“+”操作符来同时实现加法和连接字符串?这就是操作符重载在发挥作用。

你可以定义使用Python标准操作符符号的对象,这可以让你在特定的环境中使用特定的对象。

Python 关于运算符重载的规则:

不能重载内置类型的运算符

不能新建,只能重载

某些运算符不能重载--is、and、or 和 not

Python运算实际上是通过调用对象的特殊方法实现的,比如a+b:

a=20
b=30
c=a+b
d=a.__add__(b)
print("c:",c)
print("d:",c)

运算结果:

c: 50
d: 50

Vector 对于乘法的重载也是类似的:

def __mul__(self, scalar):
  if isinstance(scalar, numbers.Real):
    return Vector(n * scalar for n in self)
  else:
    return NotImplemented
def __rmul__(self, scalar):
return self * scalar

注意这里我们值定义了向量乘以一个数的乘法。尝试做点乘,矩阵乘法被分配给了@符号,我们也可以做这个定义,然后来运算

def __matmul__(self, other):
  try:
    return sum(a * b for a, b in zip(self, other))
  except TypeError:
    return NotImplemented
def __rmatmul__(self, other):
  return self @ other # this only works in Python 3.5

借助操作运算符重载我们不仅可以实现加法的运算,乘法也同样可以完成。

Python 相关文章推荐
详解Python import方法引入模块的实例
Aug 02 Python
Python实现读取邮箱中的邮件功能示例【含文本及附件】
Aug 05 Python
利用Pyhton中的requests包进行网页访问测试的方法
Dec 26 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
Apr 29 Python
Python Opencv任意形状目标检测并绘制框图
Jul 23 Python
Python bytes string相互转换过程解析
Mar 05 Python
Django更新models数据库结构步骤
Apr 01 Python
Python 处理日期时间的Arrow库使用
Aug 18 Python
Python自动化xpath实现自动抢票抢货
Sep 19 Python
pytorch 移动端部署之helloworld的使用
Oct 30 Python
Python自动化办公Excel模块openpyxl原理及用法解析
Nov 05 Python
python基于openpyxl生成excel文件
Dec 23 Python
python判断all函数输出结果是否为true的方法
Dec 03 #Python
django中cookiecutter的使用教程
Dec 03 #Python
Python批量删除mysql中千万级大量数据的脚本分享
Dec 03 #Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
Dec 03 #Python
python爬虫爬取淘宝商品比价(附淘宝反爬虫机制解决小办法)
Dec 03 #Python
python 调整图片亮度的示例
Dec 03 #Python
Python 实现PS滤镜的旋涡特效
Dec 03 #Python
You might like
discuz7 phpMysql操作类
2009/06/21 PHP
在WAMP环境下搭建ZendDebugger php调试工具的方法
2011/07/18 PHP
php实现的DateDiff和DateAdd时间函数代码分享
2014/08/16 PHP
ThinkPHP实例化模型的四种方法概述
2014/08/22 PHP
利用PHP命令行模式采集股票趋势信息
2016/08/09 PHP
lnmp安装多版本PHP共存的方法详解
2018/08/02 PHP
js下弹出窗口的变通
2007/04/18 Javascript
同一个表单 根据要求递交到不同页面的实现方法小结
2009/08/05 Javascript
javascript获取当前日期时间及其它操作函数
2011/01/11 Javascript
jQuery.each()用法分享
2012/07/31 Javascript
jQuery使用$.ajax进行即时验证实例详解
2015/12/11 Javascript
input点击后placeholder中的提示消息消失
2016/01/15 Javascript
jQuery+css实现的切换图片功能代码
2016/01/27 Javascript
jQuery基本筛选选择器实例代码
2017/02/06 Javascript
JavaScript与Java正则表达式写法的区别介绍
2017/08/15 Javascript
react-native组件中NavigatorIOS和ListView结合使用的方法
2017/09/30 Javascript
JS解析后台返回的JSON格式数据实例
2018/08/06 Javascript
js核心基础之构造函数constructor用法实例分析
2019/05/11 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
2019/05/27 Javascript
使用webpack和rollup打包组件库的方法
2021/02/25 Javascript
关于Python 3中print函数的换行详解
2017/08/08 Python
Python读取Excel表格,并同时画折线图和柱状图的方法
2018/10/14 Python
python3实现名片管理系统
2020/11/29 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
2018/12/19 Python
Django实现列表页商品数据返回教程
2020/04/03 Python
Jupyter打开图形界面并画出正弦函数图像实例
2020/04/24 Python
Django中的AutoField字段使用
2020/05/18 Python
Python控制鼠标键盘代码实例
2020/12/08 Python
html5使用Canvas绘图的使用方法
2017/11/21 HTML / CSS
关于HTML5+ API plusready的兼容问题
2020/11/20 HTML / CSS
英国第一蛋白粉品牌:Myprotein
2016/09/14 全球购物
财务会计专业应届毕业生求职信
2013/10/18 职场文书
服装设计专业毕业生推荐信
2013/11/09 职场文书
北体毕业生求职信
2014/02/28 职场文书
霸气押韵的班级口号
2014/06/09 职场文书
公司优秀员工推荐信
2015/03/24 职场文书