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的消息队列包SnakeMQ使用初探
Jun 29 Python
利用Python自动监控网站并发送邮件告警的方法
Aug 24 Python
Go/Python/Erlang编程语言对比分析及示例代码
Apr 23 Python
基于Python实现定时自动给微信好友发送天气预报
Oct 25 Python
分析运行中的 Python 进程详细解析
Jun 22 Python
python障碍式期权定价公式
Jul 19 Python
Python实现银行账户资金交易管理系统
Jan 03 Python
python 解决tqdm模块不能单行显示的问题
Feb 19 Python
python plt可视化——打印特殊符号和制作图例代码
Apr 17 Python
Python参数传递机制传值和传引用原理详解
May 22 Python
利用Python实现朋友圈中的九宫格图片效果
Sep 03 Python
解决Pyinstaller打包软件失败的一个坑
Mar 04 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
ThinkPHP3.1.2 使用cli命令行模式运行的方法
2020/04/14 PHP
用js查找法实现当前栏目的高亮显示的代码
2007/11/24 Javascript
prototype 学习笔记整理
2009/07/17 Javascript
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
javascript瀑布流布局实现方法详解
2016/02/17 Javascript
详解Angular 4.x 动态创建组件
2017/04/25 Javascript
jQuery使用eraser.js插件实现擦除、刮刮卡效果的方法【附eraser.js下载】
2017/04/28 jQuery
AngularJS使用Filter自定义过滤器控制ng-repeat去除重复功能示例
2018/04/21 Javascript
Vue实现类似Spring官网图片滑动效果方法
2019/03/01 Javascript
Vue项目服务器部署之子目录部署方法
2019/05/12 Javascript
[07:47]DOTA2国际邀请赛采访专栏:探访Valve总部
2013/08/08 DOTA
[01:35]辉夜杯战队访谈宣传片—iG.V
2015/12/25 DOTA
[01:11:08]Winstrike vs NB 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
python基础知识小结之集合
2015/11/25 Python
在Linux命令行终端中使用python的简单方法(推荐)
2017/01/23 Python
python 系统调用的实例详解
2017/07/11 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
Python提取特定时间段内数据的方法实例
2019/04/01 Python
python中正则表达式与模式匹配
2019/05/07 Python
六行python代码的爱心曲线详解
2019/05/17 Python
python利用dlib获取人脸的68个landmark
2019/11/27 Python
python实现二分查找算法
2020/09/18 Python
香港化妆品经销商:我的公主
2016/08/05 全球购物
创业者迈进成功第一步:如何写创业计划书?
2014/03/22 职场文书
学校火灾防控方案
2014/06/09 职场文书
小学生运动会通讯稿
2014/09/23 职场文书
刑事辩护授权委托书范本
2014/10/17 职场文书
入党个人总结范文
2015/03/02 职场文书
班主任开场白
2015/06/01 职场文书
中秋节感想
2015/08/10 职场文书
2016教师党员学习心得体会
2016/01/21 职场文书
幼儿园家长心得体会
2016/01/21 职场文书
《陶罐和铁罐》教学反思
2016/03/03 职场文书
60条职场经典语录,总有一条能触动你的心
2019/08/21 职场文书
Python3.10的一些新特性原理分析
2021/09/15 Python
SpringCloud Function SpEL注入漏洞分析及环境搭建
2022/04/08 Java/Android