特殊方法和运算符重载
Python 的运输符实际上是通过调用对象的特殊方法实现的
a = 10
b = 10
c = a + b
d = a.__add__(b)
print('c=',c)
print('d=',d)
特殊方法
方法 | 说明 | 例子 |
__init__ | 构造方法 | 对象创建:p = Person() |
__del__ | 析构方法 | 对象回收 |
__call__ | 函数调用 | a() |
__getattr__ | 点号运算 | a.xxx |
__repr__,str__ | 打印,转换 | print(a) |
__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 Student:
def __init__(self,name):
self.name = name
p1 = Student('小明')
p2 = Student('小红2')
x = p1 + p2
print(x)
# 运算符的重载
class Student:
def __init__(self,name):
self.name = name
def __add__(self,other):
if isinstance(other, Student):
return "{0}--{1}".format(self.name,other.name)
else:
return "不是同类对象,不能相加"
p1 = Student('小明')
p2 = Student('小红2')
x = p1 + p2
print(x)