1、运算概念的理解
运算(Operation
)是操作逻辑的抽象
- 运算体现一种操作逻辑,在广义角度来说任何程序都是一种运算
Python
解释器通过保留方法预留了一批运算的接口,需要重载- 保留方法一般对应运算符,
Python
中运算体现为运算符的重载 - 运算本质上体现了交互关系、包含关系和常规的操作关系
运算重载的限制
- 不能重载
Python
语言内置类型的运算符 - 不能新建运算符,只能通过重载完成
is
,and
,not
,or
不能被重载
2、运算符的重载
2.1 算术运算符
一元运算符:+
、-
、~
二元运算符:+
、-
、*
、/
、//
、%
、divmod()
、 pow()
、**
、<<
、>>
、&
、^
、
2.2 比较运算符
比较运算符:<、<=、==、!=、>、>=
保留方法 | 对应操作 |
---|---|
.__lt__(self, other) | obj < other |
.__le__(self, other) | obj <= other |
.__eq__(self, other) | obj == other |
.__be__(self, other) | obj != other |
.__gt__(self, other) | obj > other |
.__ge__(self, other) | obj >= other |
两个对象比较操作的运算重载
2.3 成员运算
成员获取:[]
、def
、 .eversed()
成员判断:in
保留方法 | 对应操作 | 描述 |
---|---|---|
.__getitem__(self, key) | obj[k] | 定义获取对象中序号K元素的运算逻辑,K为整数 |
.__setitem__(self, key, v) | obj[k] = v | 定义赋值对象中序号K元素的运算逻辑 |
.__delitem__(self, key) | del obj[k] | 定义删除对象中序号K元素的运算逻辑 |
.__reversed__(self) | obj.reversed() | 定义对象逆序的运算逻辑 |
.__contains__(self, item) | item in obj | 定义in操作符对应的运算逻辑 |