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 struct.unpack
Sep 06 Python
Python3.X 线程中信号量的使用方法示例
Jul 24 Python
Python将DataFrame的某一列作为index的方法
Apr 08 Python
网红编程语言Python将纳入高考你怎么看?
Jun 07 Python
Python 实现Serial 与STM32J进行串口通讯
Dec 18 Python
Python实现剪刀石头布小游戏(与电脑对战)
Dec 31 Python
python绘制封闭多边形教程
Feb 18 Python
浅析python标准库中的glob
Mar 13 Python
Pandas的Apply函数具体使用
Jul 21 Python
python之pygame模块实现飞机大战完整代码
Nov 29 Python
python实现会员管理系统
Mar 18 Python
Matplotlib绘制条形图的方法你知道吗
Mar 21 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 excel reader读取excel内容存入数据库实现代码
2012/12/06 PHP
PHP闭包(Closure)使用详解
2013/05/02 PHP
PHP使用mysql_fetch_row查询获得数据行列表的方法
2015/03/18 PHP
php-fpm添加service服务的例子
2018/04/27 PHP
js实现图片在未加载完成前显示加载中字样
2014/09/03 Javascript
全屏滚动插件fullPage.js使用实例解析
2016/10/21 Javascript
Vue组件tree实现树形菜单
2017/04/13 Javascript
JS实现汉字与Unicode码相互转换的方法详解
2017/04/28 Javascript
javascript Function函数理解与实战
2017/12/01 Javascript
在Vue组件中使用 TypeScript的方法
2018/02/28 Javascript
JavaScript引用类型Object常见用法实例分析
2018/08/08 Javascript
mpvue项目中使用第三方UI组件库的方法
2018/09/30 Javascript
微信小程序如何获取用户收货地址
2018/11/27 Javascript
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
2019/06/04 Javascript
Node.js实现简单管理系统
2019/09/23 Javascript
Python实时获取cmd的输出
2015/12/13 Python
Python中动态创建类实例的方法
2017/03/24 Python
Python文本统计功能之西游记用字统计操作示例
2018/05/07 Python
基于python实现高速视频传输程序
2019/05/05 Python
python禁用键鼠与提权代码实例
2019/08/16 Python
python离线安装外部依赖包的实现
2020/02/13 Python
浅析Django 接收所有文件,前端展示文件(包括视频,文件,图片)ajax请求
2020/03/09 Python
利用python对mysql表做全局模糊搜索并分页实例
2020/07/12 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
python安装sklearn模块的方法详解
2020/11/28 Python
python接口自动化框架实战
2020/12/23 Python
使用CSS3制作饼状旋转载入效果的实例
2015/06/23 HTML / CSS
YOOX台湾:意大利奢侈品电商
2018/10/13 全球购物
《猴子种果树》教学反思
2014/04/26 职场文书
学校工作推荐信范文
2014/07/11 职场文书
查摆剖析材料范文
2014/09/30 职场文书
酒店工程部岗位职责
2015/02/12 职场文书
2015年高三年级组工作总结
2015/07/21 职场文书
小学体育组工作总结
2015/08/13 职场文书
创业计划书之干洗店
2019/09/10 职场文书
mybatis中sql语句CDATA标签的用法说明
2021/06/30 Java/Android