python对象重写__add__,__radd__方法即可实现'+'操作符

demo:

 # coding=utf-8

 class Person(object):
def __init__(self, age):
self.age = age
def __add__(self, other):
return self.age + other
def __radd__(self, other):
return self.age + other print(Person(5) + Person(10))

输出结果:

15

注意:

如果 a 有 __add__ 方法, 而且返回值不是 NotImplemented, 调用a.__add__(b), 然后返回结果。
如果 a 没有 __add__ 方法, 或者调用 __add__ 方法返回NotImplemented, 检查 b 有没有 __radd__ 方法, 如果有, 而且没有返回 NotImplemented, 调用 b.__radd__(a), 然后返回结果。
如果 b 没有 __radd__ 方法, 或者调用 __radd__ 方法返回NotImplemented, 抛出 TypeError, 并在错误消息中指明操作数类型不支持。

python实现对象'+'操作符的更多相关文章

  1. Python进阶 - 对象,名字以及绑定

    Python进阶 - 对象,名字以及绑定 1.一切皆对象 Python哲学: Python中一切皆对象 1.1 数据模型-对象,值以及类型 对象是Python对数据的抽象.Python程序中所有的数据 ...

  2. Python中的操作符重载

    运算符重载是指在方法中拦截内置的操作----当类的实例出现在内置操作中,Python会自动调用自定义的办法,并且返回自定义方法的操作结果.     类可以重载python的操作符 操作符重载使我们的对 ...

  3. Python:格式化操作符(%)

    原文作者:田小计划 原文出处:http://www.cnblogs.com/wilber2013/ (若转载,请标明原文出处) 在编写程序的过程中,经常需要进行格式化输出,每次用每次查.干脆就在这里整 ...

  4. Python列表脚本操作符

    Python列表脚本操作符: len(列表名): 查看列表长度 # 使用 len(列表名) 方法查看列表长度 lst = [1,2,3,4] print(len(lst)) # # 注:嵌套列表算一个 ...

  5. Python的对象操作(一)

    python支持对象和函数   1. python是解释型语言,逐行运行 2. 对象调用 例子:删除文件的一个例子 2.1 先定义一个类 class MyApp: 2.2 import 引用要用到的模 ...

  6. python面对对象编程------4:类基本的特殊方法__str__,__repr__,__hash__,__new__,__bool__,6大比较方法

    一:string相关:__str__(),__repr__(),__format__() str方法更面向人类阅读,print()使用的就是str repr方法更面对python,目标是希望生成一个放 ...

  7. Python 文件对象

    Python 文件对象 1) 内置函数 open() 用于打开和创建文件对象 open(name,[,mode[,bufsize]]) 文件名.模式.缓冲区参数 mode: r 只读 w 写入 a 附 ...

  8. python中对象、类型和元类之间的关系

    在python中对象.类型和元类构成了一个微妙的世界. 他们有在这个世界里和平共处,相辅相成.它们遵循着几条亘古不变的定律: 1.python中无处不对象 2.所有对象都有三种特性:id.类型.值 3 ...

  9. 帮Python找“对象”

    引言:你一定会感叹:Python还缺找对象? 毕竟"一切皆对象"是人家Python的哲学理念.不过,Python  允许程序员以纯粹的面向过程的方式来使用它,所以人们有时会忽视它那 ...

随机推荐

  1. 辽宁工程技术大学校园网(深澜) 叠加小水管提速,多wan叠加负载均衡

    教程没啥大用了.可以直接修改路由器为DHCP自动获取ip,然后直接登录校园网. 昨天晚上尝试了下用潘多拉固件多wan叠加网速,负载均衡,算是提高了速度. 转载请注明出处.教程供参考.本教程不是破解教程 ...

  2. java基础之JDBC六:DBCP 数据库连接池简介

    我们之前写的代码中的数据库连接每次都是自己创建,用完以后自己close()销毁的,这样是很耗费资源的,所以我们引入DBCP DBCP简介 概述: Data Base Connection Pool, ...

  3. 661. Image Smoother色阶中和器

    [抄题]: Given a 2D integer matrix M representing the gray scale of an image, you need to design a smoo ...

  4. 如何安全退出已调用多个Activity的应用

    对于单一Activity的应用来说,退出很简单,直接finish()即可.当然,也可以用killProcess()和System.exit()这样的方法. 但是,对于多Activity的应用来说,在打 ...

  5. jQuery基础教程-第8章-002Adding jQuery object methods

    一.Object method context 1.We have seen that adding global functions requires extending the jQuery ob ...

  6. SQL 批量插入有标识列的数据

    代码:  SET IDENTITY_INSERT 表名 ON  SET IDENTITY_INSERT 表名 OFF

  7. 在IE11(Win8)中检查up6.2配置

      1.按F12,打开调试模式    2.打开调试程序选项卡 说明:在调试程序选项卡中可看到IE加载的脚本信息是否正确.因为IE有缓存,导致脚本有时不是最新的.    3.打开脚本,up6.js   ...

  8. 《深度学习原理与TensorFlow实践》喻俨,莫瑜

    1. 深度学习简介 2. TensorFlow系统介绍 3. Hello TensorFlow 4. CNN看懂世界 5. RNN能说会道 6. CNN LSTM看图说话 7. 损失函数与优化算法 T ...

  9. HTML5 Canvas游戏开发实战 PDF扫描版

    HTML5 Canvas游戏开发实战主要讲解使用HTML5 Canvas来开发和设计各类常见游戏的思路和技巧,在介绍HTML5 Canvas相关特性的同时,还通过游戏开发实例深入剖析了其内在原理,让读 ...

  10. CentOS7 yum安装lamp环境

    1.安装apache yum install httpd #根据提示,输入Y安装即可成功安装 systemctl start httpd.service #启动apache systemctl sto ...