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 图片验证码代码
Dec 07 Python
pymongo为mongodb数据库添加索引的方法
May 11 Python
python计算一个序列的平均值的方法
Jul 11 Python
Django Highcharts制作图表
Aug 27 Python
Python进程间通信Queue实例解析
Jan 25 Python
Python-OpenCV基本操作方法详解
Apr 02 Python
Python获取二维矩阵每列最大值的方法
Apr 03 Python
python清除字符串中间空格的实例讲解
May 11 Python
Python numpy数组转置与轴变换
Nov 15 Python
TensorFlow 读取CSV数据的实例
Feb 05 Python
python+selenium+chrome批量文件下载并自动创建文件夹实例
Apr 27 Python
python图像处理基本操作总结(PIL库、Matplotlib及Numpy)
Jun 08 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
Php 构造函数construct的前下划线是双的_
2009/12/08 PHP
分享下页面关键字抓取components.arrow.com站点代码
2014/01/30 PHP
php实现的发送带附件邮件类实例
2014/09/22 PHP
PHP获取当前URL路径的处理方法(适用于多条件筛选列表)
2017/02/10 PHP
多浏览器支持的右下角浮动窗口
2010/04/01 Javascript
JS 文件传参及处理技巧分析
2010/05/13 Javascript
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
2011/01/12 Javascript
jQuery实现鼠标滑过遮罩并高亮显示效果
2013/07/16 Javascript
node.js操作mongoDB数据库示例分享
2014/11/26 Javascript
微信小程序 绘图之饼图实现
2016/10/24 Javascript
Js自动截取字符串长度,添加省略号(……)的实现方法
2017/03/06 Javascript
Express URL跳转(重定向)的实现方法
2017/04/07 Javascript
JavaScript实现提交模式窗口后刷新父窗口数据的方法
2017/06/16 Javascript
详解Vue学习笔记进阶篇之列表过渡及其他
2017/07/17 Javascript
JavaScript+CSS相册特效实例代码
2017/09/07 Javascript
使用vue官方提供的模板vue-cli搭建一个helloWorld案例分析
2018/01/16 Javascript
Vue父子组建的简单通信之控制开关Switch的实现
2018/06/04 Javascript
详解搭建es6+devServer简单开发环境
2018/09/25 Javascript
js判断一个对象是数组(函数)的方法实例
2019/12/19 Javascript
vue实现图片上传到后台
2020/06/29 Javascript
JavaScript动态生成表格的示例
2020/11/02 Javascript
[02:09]2018DOTA2亚洲邀请赛TNC赛前采访
2018/04/04 DOTA
python正则表达式判断字符串是否是全部小写示例
2013/12/25 Python
python多线程扫描端口示例
2014/01/16 Python
python实现将汉字转换成汉语拼音的库
2015/05/05 Python
神经网络python源码分享
2017/12/15 Python
python程序快速缩进多行代码方法总结
2019/06/23 Python
python cumsum函数的具体使用
2019/07/29 Python
opencv3/C++实现视频背景去除建模(BSM)
2019/12/11 Python
介绍一下grep命令的使用
2012/06/28 面试题
暑期实践思想汇报
2014/01/06 职场文书
上学迟到的检讨书
2014/01/11 职场文书
倡议书格式范文
2014/04/14 职场文书
大客户经理岗位职责
2015/04/09 职场文书
python神经网络编程之手写数字识别
2021/05/08 Python
MySQL 自动填充 create_time 和 update_time
2022/05/20 MySQL