a=20
b=30
c=a+b
d=a.__add__(b)
print("c=",c)
print("d=",d)
执行结果
c= 50
d= 50
常见的特殊方法统计如下:
方法 | 说明 | 例子 |
---|---|---|
__init__ | 构造方法 | 对象创建:p=Person() |
__del__ | 析构方法 | 对象回收 |
__repr__,__str__ | 打印,转换 | print(a) |
__call__ | 函数调用 | a() |
__getattr__ | 点号运算 | a.xxx |
__setattr__ | 属性赋值 | a.xxx=value |
__getitem__ | 索引运算 | a[key] |
__setitem__ | 索引赋值 | a[key]=value |
__len__ | 长度 | len(a) |
运算符 | 特殊方法 | 说明 |
---|---|---|
运算符+ | add | 加法 |
运算符- | sub | 减法 |
<,<=,== | lt,le,eq | 比较运算符 |
>,>=,!= | gt,ge,ne | 比较运算符 |
,^,& | or,xor,and | 或、异或、与 |
<<,>> | lshift,rshift | 左移、右移 |
*,/,%,// | mul,truediv,mod,floordiv | 乘、浮点除、模运算(取余)、整数除 |
** | pow | 指数运算 |
可以重写上面的特殊方法,即实现了“运算符的重载”
#测试运算符的重载
class Person:
def __init__(self,name):
self.name = name
def __add__(self, other):
if isinstance(other,Person):
return "{0}--{1}".format(self.name,other.name)
else:
return "不是同类对象,不能相加"
def __mul__(self, other):
if isinstance(other,int):
return self.name*other
else:
return "不是同类对象,不能相乘"
p1 = Person("高淇")
p2 = Person("高希希")
x = p1 + p2
print(x)
print(p1*3)
执行结果
高淇--高希希
高淇高淇高淇