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类定义和类继承详解
May 08 Python
Python中特殊函数集锦
Jul 27 Python
Python简单实现自动删除目录下空文件夹的方法
Aug 29 Python
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
Feb 21 Python
Python动态生成多维数组的方法示例
Aug 09 Python
python+numpy实现的基本矩阵操作示例
Jul 19 Python
python随机生成库faker库api实例详解
Nov 28 Python
keras处理欠拟合和过拟合的实例讲解
May 25 Python
用python给csv里的数据排序的具体代码
Jul 17 Python
Python爬虫抓取指定网页图片代码实例
Jul 24 Python
10款最佳Python开发工具推荐,每一款都是神器
Oct 15 Python
python画条形图的具体代码
Apr 20 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
《被神捡到的男人》动画化计划进行中!
2020/03/06 日漫
PHP无限分类(树形类)的深入分析
2013/06/02 PHP
WordPress过滤垃圾评论的几种主要方法小结
2016/07/11 PHP
VBScript版代码高亮
2006/06/26 Javascript
Array.prototype 的泛型应用分析
2010/04/30 Javascript
JQUERY1.6 使用方法四 检测浏览器
2011/11/23 Javascript
js对象与打印对象分析比较
2013/04/23 Javascript
JavaScript实现GriwView单列全选(自写代码)
2013/05/13 Javascript
NodeJS的url截取模块url-extract的使用实例
2013/11/18 NodeJs
AngularJS学习第二篇 AngularJS依赖注入
2017/02/13 Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
2017/03/14 Javascript
bootstrap table表格插件使用详解
2017/05/08 Javascript
JavaScript中this关键字用法实例分析
2018/08/24 Javascript
vue使用localStorage保存登录信息 适用于移动端、PC端
2019/05/27 Javascript
微信小程序3种位置API的使用方法详解
2019/08/05 Javascript
vue中使用element组件时事件想要传递其他参数的问题
2019/09/18 Javascript
vue输入框使用模糊搜索功能的实现代码
2020/05/26 Javascript
Vue父子组件传值的一些坑
2020/09/16 Javascript
vue 递归组件的简单使用示例
2021/01/14 Vue.js
解决Python传递中文参数的问题
2015/08/04 Python
Python的Django应用程序解决AJAX跨域访问问题的方法
2016/05/31 Python
Python中的time模块与datetime模块用法总结
2016/06/30 Python
python 数字类型和字符串类型的相互转换实例
2018/07/17 Python
对python 命令的-u参数详解
2018/12/03 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
2020/02/11 Python
Tensorflow tf.tile()的用法实例分析
2020/05/22 Python
Python 如何操作 SQLite 数据库
2020/08/17 Python
python 匿名函数与三元运算学习笔记
2020/10/23 Python
英语系毕业生自荐信
2013/10/31 职场文书
西式婚礼主持词
2014/03/13 职场文书
员工安全承诺书
2014/05/22 职场文书
商场租赁意向书
2014/07/30 职场文书
部队个人年终总结
2015/03/02 职场文书
会议简讯范文
2015/07/20 职场文书
2016年植树节红领巾广播稿
2015/12/17 职场文书
基于Python的EasyGUI学习实践
2021/05/07 Python