python实现对象'+'操作符

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

demo:

 1 # coding=utf-8
 2
 3 class Person(object):
 4     def __init__(self, age):
 5         self.age = age
 6     def __add__(self, other):
 7         return self.age + other
 8     def __radd__(self, other):
 9         return self.age + other
10
11 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实现对象'+'操作符

原文地址:https://www.cnblogs.com/reboot777/p/10384513.html

时间: 2024-08-29 19:28:28

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

python通过点操作符和reduce遍历对象的属性的代码

如下的资料是关于python通过点操作符和reduce遍历对象的属性的内容,应该能对码农们有较大用途. class Klass(object): def __getattr__(self, name): """ Locate the function with the dotted attribute. """ def traverse(parent, child): if instance(parent, str): parent = geta

Python中的操作符重载

类可以重载python的操作符 操作符重载使我们的对象与内置的一样.__X__的名字的方法是特殊的挂钩(hook),python通过这 种特殊的命名来拦截操作符,以实现重载. python在计算操作符时会自动调用这样的方法,例如: 如果对象继承了__add__方法,当它出现在+表达式中时会调用这个方法.通过重载,用户定义的对 象就像内置的一样. 在类中重载操作符 1.操作符重载使得类能拦截标准的python操作. 2.类可以重载所有的python的表达式操作符. 3.类可以重载对象操作:prin

Python的对象协议

Python是一门动态语言,Duck Typing概念遍布其中,所以其中的Concept并不是以类型的约束为载体,而是使用称作为协议的概念.那什么是Duck Typing呢? Duck Typing是鸭子类型,在动态语言中用的较多,是动态类型语言设计的一种风格.在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口决定,而是由当前方法和属性的集合决定.说白了就是并不关心对象是什么类型,只关心行为. 这个概念的名字来源于由James Whitcomb Riley提出的鸭子测试(见下

Python之对象的属性

# -*- coding: utf-8 -*- #python 27 #xiaodeng #Python之对象的属性 #http://python.jobbole.com/82622/ #对象的属性 class bird(): feather = True class chicken(bird): fly = False def __init__(self,age): self.age = age summer = chicken(2) print(bird.__dict__) print(ch

python函数对象

适用于python 2.x版本 1. lambda函数 1 func = lambda x, y : x + y 2 print func(2, 4) lambda生成一个函数对象,参数是x,y, 返回x+y. 2. map() 函数 1 rtn = map((lambda x: x*3), [1, 2, 3, 4, 5, 6]) 2 print rtn map是python内置函数,第一个参数是函数,第二个参数是一个序列.第一个函数作用与序列的每一个元素,并将结果放在序列rtn里. 3. re

以写代学:python 原始字符串操作符&&字符串内建函数

原始字符串操作符 (1)原始字符串操作符是为了对付那些在字符串中出现的特殊字符 (2)在原始字符串里,所有的字符都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符 (3)比如在windows写路径时经常会把出现以下情况 2.字符串内建函数 (1)每次都不会改变字符串原本的值 (2)字符串.函数 或者将字符串赋值给函数后写成变量名.函数是都可以的 (3)还有很多的内涵函数,下边只是举例说明 >>> import tab        >>> hi = "

Python的对象操作(一)

python支持对象和函数   1. python是解释型语言,逐行运行 2. 对象调用 例子:删除文件的一个例子 2.1 先定义一个类 class MyApp: 2.2 import 引用要用到的模块 __author__ = 'Bright' import shutil import os """ * 对象操作实战 * 上演出多个文件 """ class MyApp: def __init__(self, root): self.root =

python string 对象

上一篇的整数对象是定长数据,即C中的long型整数. 但是python中还大量存在着不定长的数据类型.如字符串对象 和整数对象一样,字符串对象的组成如下: PyStringObject定义如下: Ob_size就是实际使用的内存大小,在注释中:ob_sval contains space for 'ob_size+1' elements. 因为末尾需要额外包含一个0 byte来保证字符串的结束. 这个学过C语言的应该都不会陌生的.但是这只是一个字符数组,怎么能包含N个字符呢? 显然这只能是一个字

python 获取对象信息

当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type()判断: >>> type(123) <type 'int'> >>> type('str') <type 'str'> >>> type(None) <type 'NoneType'> 如果一个变量指向函数或者类,也可以用type()判断: >&