前面讲面向对象的时候有提过几个特殊方法,比如__init__
等,这篇博客我们来总结一些可能用的到的特殊方法和特殊属性。
1、特殊方法
表1-1:跟运算符无关的特殊方法
类别 | 方法名 |
---|---|
字符串 / 字节序列表示形式 | __repr__、__str__、__format__、__bytes__ |
数值转换 | __abs__、__bool__、__complex__、__int__、__float__、__hash__、__index__ |
集合模拟 | __len__、__getitem__、__setitem__、__delitem__、__contains__ |
迭代枚举 | __iter__、__reversed__、__next__ |
可调用模拟 | __call__ |
上下文管理 | __enter__、__exit__ |
实例创建和销毁 | __new__、__init__、__del__ |
属性管理 | __getattr__、__getattribute__、__setattr__、__delattr__、__dir__ |
属性描述符 | __get__、__set__、__delete__ |
跟类相关的服 务 | __prepare__、__instancecheck__、__subclasscheck__ |
表1-2:跟运算符相关的特殊方法
运算符 | 正向方法 | 反向方法 | 就地方法 | 说明 |
---|---|---|---|---|
+ | __add__ | __radd__ | __iadd__ | 加法或拼接 |
- | __sub__ | __rsub__ | __isub__ | 减法 |
* | __mul__ | __rmul__ | __imul__ | 乘法或重新复制 |
/ | __truediv__ | __rtruediv__ | __itruediv__ | 除法 |
// | __floordiv__ | __rfloordiv__ | __ifloordiv__ | 整除 |
% | __mod__ | __rmod__ | __imod__ | 取模 |
divmod() | __divmod__ | __rdivmod__ | __idivmod__ | 返回由整除的商和模数组成的元组 |
**或者pow() | __pow__ | __rpow__ | __ipow__ | 取幂 |
@ | __matmul__ | __rmatmul__ | __imatmul__ | 矩阵乘法 |
& | __and__ | __rand__ | __iand__ | 位与 |
| | __or__ | __ror__ | __ior__ | 位或 |
^ | __xor__ | __rxor__ | __ixor__ | 位异或 |
<< | __lshift__ | __rlshift__ | __ilshift__ | 按位左移 |
>> | __rshift__ | __rrshift__ | __irshift__ | 按位右移 |
就地运算符用于增量赋值
类别 | 方法名和对应的运算符 |
---|---|
一元运算符 | __neg__ -、__pos__ +、__abs__ abs() |
众多比较运算符 | __lt__ <、__le__ <=、__eq__ ==、__ne__ !=、__gt__ >、__ge__ >= |
2、特殊属性
特殊方法 | 含义 |
---|---|
obj.__dict __ | 对象的属性字典 |
obj.__class__ | 对象所属的类 |
class.__bases__ | 类的基类元组(多继承) |
class.__base__ | 类的基类 |
class.__mro__ | 类层次结构 |
class.__subclasses__() | 子类列表 |