核心思想
- 重写魔法方法 → 自定义对象运算逻辑
- Python灵活性:初学者用默认逻辑,进阶者可定制化
- 示例:重写int的__add__,实现加法变减法(5+3=2)
反运算魔法方法
- 标识:算术方法名前加
r,如__radd__对应__add__ - 触发条件:左操作数未实现/不支持对应运算时,调用右操作数的反运算方法
- 核心注意点:参数顺序,
__radd__中self是右操作数,other是左操作数 - 示例
- 正常情况:A+B → 调用A的
__add__ - 反运算触发:1+B → 1无
__add__,调用B的__radd__ - 顺序陷阱:减法/除法等注重顺序的运算,重写反方法需注意操作数位置
- 正常情况:A+B → 调用A的
增量运算魔法方法
- 本质:赋值+算术运算的简写(如
a += b) - 对应方法:
__iadd__(+=)、__isub__(-=)等 - 特点:写法与普通算术魔法方法一致,定制增量赋值逻辑
一元操作符魔法方法
- 定义:仅需一个操作数的运算
- 常见方法及作用
__pos__:正号行为(如+a)__neg__:负号行为(如-a)__abs__:被abs()调用时的行为(取绝对值)__invert__:按位取反行为(如~a)
- 实现逻辑:重写方法自定义返回值,一通百通