特殊方法和特殊属性
本章概述:python基础——特殊方法和特殊属性
前面讲面向对象的时候有提过几个特殊方法,比如__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__() |
子类列表 |