python __add__和__radd__
来源:互联网 发布:java 判断是不是汉字 编辑:程序博客网 时间:2024/04/19 02:14
+ 号运算符号,通常我们用来重载一些实例之间的添加操作,这里讲述一下__add__和__radd__的运算解析流程
class A:def __add__(self, other):print("A __add__")def __radd__(self, other):print("A __radd__")class B:pass>>> a = A()>>> b = B()>>> a+bA __add__>>> b+aA __radd__>>> c = B()>>> b + cTraceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: unsupported operand type(s) for +: 'instance' and 'instance'
如果 a 有 __add__ 方法, 而且返回值不是 NotImplemented, 调用a.__add__(b), 然后返回结果。
如果 a 没有 __add__ 方法, 或者调用 __add__ 方法返回NotImplemented, 检查 b 有没有 __radd__ 方法, 如果有, 而且没有返回 NotImplemented, 调用 b.__radd__(a), 然后返回结果。
如果 b 没有 __radd__ 方法, 或者调用 __radd__ 方法返回NotImplemented, 抛出 TypeError, 并在错误消息中指明操作数类型不支持。
阅读全文
0 0
- python __add__和__radd__
- python核心编程学习笔记-2016-08-15-01-左加法__add__和右加法__radd__
- python学习之类特殊方法定制 __add__,__iadd__,__radd__
- python面向对象编程__str__, __die__, __add__等
- Using __iadd__ & __radd__
- python *和**
- 【Python】 Python:locals 和 globals
- 【Python】 Python:locals 和 globals
- 【Python】 Python输入和输出
- python 2 和 python 3
- 【Python】Python编码和Unicode
- python 的 * 和 @
- 线程和python
- google和python
- Zope和Python如影随形
- Python、Unicode和中文
- Python 和 Lua
- 字符集、编码和Python
- Android零基础入门第55节:ImageSwitcher和TextSwitcher使用
- python os 命令,及判断文件夹是否存在
- python-opencv中的cv2.inRange函数
- HDU 3932(计算几何+最小圆覆盖)
- 404. Sum of Left Leaves
- python __add__和__radd__
- centos7 安装 mysql
- 2017.9.4 Nim 思考记录
- docker 网络
- 【程序人生】让自己成为不可替代
- Python中heapq模块的用法
- Angular使用Promise解决多个异步回调问题
- 基于nginx和redis架构的高并发框架的设计与研究
- 【kubernetes/k8s源码分析】kube-controller-manager之endpoint controller源码分析