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标准库之循环器(itertools)介绍
Nov 25 Python
在Python的Django框架中获取单个对象数据的简单方法
Jul 17 Python
python实现堆和索引堆的代码示例
Mar 19 Python
PyTorch上实现卷积神经网络CNN的方法
Apr 28 Python
使用python进行文本预处理和提取特征的实例
Jun 05 Python
Python之用户输入的实例
Jun 22 Python
python pygame实现2048游戏
Nov 20 Python
django 自定义过滤器(filter)处理较为复杂的变量方法
Aug 12 Python
Python基于数列实现购物车程序过程详解
Jun 09 Python
Python 如何查找特定类型文件
Aug 17 Python
Python爬虫入门教程02之笔趣阁小说爬取
Jan 24 Python
Python关于OS文件目录处理的实例分享
May 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
PHP字符串 ==比较运算符的副作用
2009/10/21 PHP
php实现的一段简单概率相关代码
2016/05/30 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
pjblog中的UBBCode.js
2007/04/25 Javascript
基于jquery实现点击左右按钮图片横向滚动
2013/04/11 Javascript
JS 对象属性相关(检查属性、枚举属性等)
2015/04/05 Javascript
JavaScript实现动画打开半透明提示层的方法
2015/04/21 Javascript
JavaScript实现图片轮播的方法
2015/07/31 Javascript
JQuery ztree带筛选、异步加载实例讲解
2016/02/25 Javascript
基于javascript实现样式清新图片轮播特效
2016/03/30 Javascript
第三章之Bootstrap 表格与按钮功能
2016/04/25 Javascript
jQuery简单设置文本框回车事件的方法
2016/08/01 Javascript
bootstrap3中container与container_fluid外层容器的区别讲解
2017/12/04 Javascript
详解 vue better-scroll滚动插件排坑
2018/02/08 Javascript
Mint-UI时间组件起始时间问题及时间插件使用
2018/08/20 Javascript
Node.js console控制台简单用法分析
2019/01/04 Javascript
vue-cli 目录结构详细讲解总结
2019/01/15 Javascript
深入解读Node.js中的koa源码
2019/06/17 Javascript
JavaScript获取某一天所在的星期
2019/09/05 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
2019/09/06 Javascript
实现vuex与组件data之间的数据同步更新方式
2019/11/12 Javascript
vue渲染方式render和template的区别
2020/06/05 Javascript
Vue 请求传公共参数的操作
2020/07/31 Javascript
Vue+scss白天和夜间模式切换功能的实现方法
2021/01/05 Vue.js
Python 学习笔记
2008/12/27 Python
从零学Python之入门(四)运算
2014/05/27 Python
python正则表达式的使用
2017/06/12 Python
python在不同条件下的输入与输出
2020/02/13 Python
阿里健康官方海外旗舰店:阿里健康国际自营
2017/11/24 全球购物
NFL加拿大官方网上商店:NHLShop.ca
2019/03/12 全球购物
创先争优制度
2014/01/21 职场文书
代理商会议邀请函
2014/01/27 职场文书
五好家庭事迹材料
2014/12/20 职场文书
因家庭原因离职的辞职信范文
2015/05/12 职场文书
jQuery实现影院选座订座效果
2021/04/13 jQuery
Win7/8.1用户可以免费升级到Windows 11系统吗?
2021/11/21 数码科技