python方法重载_Python中类方法重载---大部分

重载方法格式:

def __xxx__(self,other):

...

注:重载方法格式

-----------------------------------------------------------------运算符

运算符重载:

作用:

让自定义的类创建的对象像内建对象一样进项运算符操作

算数运算符:

__add__ 加法 +

__sub__ 减法 -

__mul__ 乘法 *

__truedif__ 除法 /

__floordiv__ 地板除 //

__mod__ 取模(求余) %

__pow__ 幂 **

反向算数运算符重载:

__radd__(self, lhs) # 加法 lhs + self

__rsub__(self, lhs) # 减法 lhs + self

__rmul__(self, lhs) # 乘法 lhs * self

__rtruediv__(self, lhs) # 除法 lhs / self

__rfloordiv__(self, lhs) # 地板除 lhs // self

__rmod__(self, lhs) # 取模 lhs % self

__rpow__(self, lhs) # 幂运算 lhs ** self

注:lhs(left hand side) 左手边

复合赋值算数运算符的重载:

__iadd__(self, other) # 加法 self += other

__isub__(self, other) # 减法 self -= other

__imul__(self, other) # 乘法 self *= other

__itruediv__(self, other) # 除法 self /= other

__ifloordiv__(self, other) # 地板除 self //= other

__imod__(self, other) # 取模 self %= other

__ipow__(self, other) # 幂运算 self **= other

注:当重载后优先使用重载的方法,否则使用__add__等方法代替

-----------------------------------------------------------------比较运算符

比较运算符重载:

__lt__ 小于 <

__le__ 大于等于 <=

__gt__ 大于 >

__ge__ 大于等于 >=

__eq__ 等于 ==

__ne__ 不等于 !=

-----------------------------------------------------------------位操作运算符

位操作运算符重载:

__and__ 位与 &

__or__ 位或 |

__xor__ 位异或 ^

__lshift__ 左移 <<

__rshift__ 右移 >>

反向位操作运算符:

__rand__ 位与 &

__ror__ 位或 |

__rxor__ 位异或 ^

__rlshift__ 左移 <<

__rrshift__ 右移 >>

复合赋值位运算符重载:

__iand__ 位与 &

__ior__ 位或 |

__ixor__ 位异或 ^

__ilshift__ 左移 <<

__irshift__ 右移 >>

-----------------------------------------------------------------一元运算符

一元运算符的重载:

__neg__ 符号 -

__pos__ 正号 +

__invert__ 取反 ~

重载格式:

def __xxx__(self):

pass

-----------------------------------------------------------------内建函数

内建函数重载:

def __abs__(self) abs(obj) 函数调用

def __len__(self) len(obj) 函数调用

def __reversed__(self) reversed(obj) 函数调用

def __round__(self) round(obj) 函数调用

-----------------------------------------------------------------数值转换函数

数值转换函数重载:

__int__int(obj)

__float__float(obj)

__complex__complex(obj)

__bool__bool(obj)

-----------------------------------------------------------------布尔测试运算符

布尔测试运算符重载:

格式:

def __bool__(self):

....

作用:

1) 用于bool(obj) 函数取值

2) 用于if语句真值表达式中

3) 用于while语句真值表达式中

重载说明:

当没有 __bool__(self) 方法时,真值测试将取

__len__(self) 方法的返回值来测试布尔值

-----------------------------------------------------------------in / not in

in / not in 运算符重载:

格式:

def __contains__(self, e):

...

作用:

成员资格测试(通常)

-----------------------------------------------------------------索引和切片

索引和切片运算符的重载:

重载方法:

__getitem__(self, i) 方法

__sefitem__(self, i, v) 方法

__delitem__(self, i) 方法

作用:

让自定义类型的对象能进行索引和切片操作

切片(slice)重载:

切片重载同性索引重载公用的方法

__getitem__(self, i) 切片取值

__sefitem__(self, i, v) 切片赋值

__delitem__(self, i) del切片删除

-----------------------------------------------------------------迭代器重载

迭代器:

__next__(self):

可迭代对象:

__iter__(self):

-----------------------------------------------------------------with环境管理器类内重载

类内有__enter__ 和 __exit__ 方法的类被称为环境管理器

能够用with进行管理的对象必须是环境管理器

__enter__ 方法将在进入 with 语句时被调用返回由 as 变量管理的对象

__exit__ 方法将在离开with语句时被调用,且可以用参数来判断离开with语句时是否有异常发生并作出相应的处理

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值