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快速排序代码实例
Nov 21 Python
python实现异步回调机制代码分享
Jan 10 Python
Python实现豆瓣图片下载的方法
May 25 Python
Tensorflow简单验证码识别应用
May 25 Python
Python实现学校管理系统
Jan 11 Python
python2.7安装图文教程
Mar 13 Python
python得到电脑的开机时间方法
Oct 15 Python
代码详解django中数据库设置
Jan 28 Python
python实现自动化上线脚本的示例
Jul 01 Python
12个步骤教你理解Python装饰器
Jul 01 Python
Tensorflow实现神经网络拟合线性回归
Jul 19 Python
python学生信息管理系统实现代码
Dec 17 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中数组的三种排序方法分享
2012/05/07 PHP
php使用$_POST或$_SESSION[]向js函数传参
2014/09/16 PHP
php使用pdo连接sqlite3的配置示例
2016/05/27 PHP
PHP与JavaScript针对Cookie的读写、交互操作方法详解
2017/08/07 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
thinkphp5框架扩展redis类方法示例
2019/05/06 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
自适应图片大小的弹出窗口
2006/07/27 Javascript
JavaScript中“+=”的应用
2007/02/02 Javascript
求得div 下 img的src地址的js代码
2007/02/28 Javascript
当前页禁止复制粘贴截屏代码小集
2013/07/24 Javascript
当鼠标移动时出现特效的JQuery代码
2013/11/08 Javascript
js点击事件链接的问题解决
2014/04/25 Javascript
js数值计算时使用parseInt进行数据类型转换(jquery)
2014/10/07 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
2015/04/06 Javascript
js不间断滚动的简单实现
2016/06/03 Javascript
纯JS实现弹性导航条效果
2017/03/06 Javascript
深入理解Javascript中的作用域链和闭包
2017/04/25 Javascript
五步轻松实现zTree的使用
2017/11/01 Javascript
JavaScript实现多个物体同时运动
2020/03/12 Javascript
vue-cli单页面预渲染seo-prerender-spa-plugin操作
2020/08/10 Javascript
九步学会Python装饰器
2015/05/09 Python
python数据类型_元组、字典常用操作方法(介绍)
2017/05/30 Python
python自定义异常实例详解
2017/07/11 Python
Python中字符串List按照长度排序
2019/07/01 Python
pytorch实现特殊的Module--Sqeuential三种写法
2020/01/15 Python
Python使用Paramiko控制liunx第三方库
2020/05/20 Python
基于HTML5 Canvas的3D动态Chart图表的示例
2017/11/02 HTML / CSS
餐饮加盟计划书
2014/01/10 职场文书
父亲追悼会答谢词
2014/01/17 职场文书
委托书范文
2014/04/02 职场文书
学雷锋活动总结报告
2014/06/26 职场文书
社团活动总结怎么写
2014/06/30 职场文书
2016道德模范先进事迹材料
2016/02/26 职场文书
python tkinter实现定时关机
2021/04/21 Python
Redis如何实现分布式锁
2021/08/23 Redis