概述
魔法函数(Magic Methods),是Python的一种高级语法,允许在类中自定义函数(函数名格式一般为__xx__),并绑定到类的特殊方法中。
比如在类A中自定义__str__()函数,则在调用str(A())时,会自动调用__str__()函数,并返回相应的结果。在我们平时的使用中,可能经常使用__init__函数(构造函数)和__del__函数(析构函数),其实这也是魔法函数的一种。
- Python中以双下划线(xx)开始和结束的函数(不可自己定义)为魔法函数。
- 调用类实例化的对象的方法时自动调用魔法函数。
- 在自己定义的类中,可以实现python的内置函数
常见魔法函数:非数学运算
字符串表示:
__repr__函数和__str__函数
集合、序列相关:
__len__函数、__getitem__函数、__setitem__函数、__delitem__函数和__contains__函数
迭代相关:
__iter__函数和__next__函数
可调用:
__call__函数
with上下文管理器:
__enter__函数和__exit__函数
数值转换:
__abs__函数、__bool__函数、__int__函数、__float__函数、__hash__函数和__index__函数
元类相关:
__new__函数和__init__函数
属性相关:
__getattr__函数、__setattr__函数、__getattribute__函数、__setattribute__函数和__dir__函数
属性描述符:
__get__函数、__set__函数和__delete_函数
协程:
__await__函数、__aiter__函数、__anext__函数、__aenter__函数和__aexit__函数
常见魔法函数:数学运算
一元运算符:
neg (-)、pos (+)和__abs__函数
二元运算符:
lt (<),le (<=),eq (==),ne (!=),gt (>)和__ge__ (>=)
算术运算符:
add (+)、sub (-)、mul (*)、truediv (/)、floordiv (//)、mod (%)、divmod 或divmod()、pow 或pow() (**)和__round__ 或round()
反向算术运算符:
radd、rsub、rmul、rtruediv、rfloordiv、rmod、rdivmod__和__rpow。
增量赋值算术运算符:
iadd、isub、imul、ifloordiv__和__ipow。
位运算符:
invert (~)、lshift (<<)、rshift (>>)、and (&)、or (|)和__xor__ (^)
反向位运算符:
rlshift、rrshift、iand、ixor__和__ior
增量赋值运算符:
ilshift、irshift、iand、ixor__和__ior
其他魔法函数
__ unicode__()函数,__ delattr__()函数, __ del__()函数, dict()函数,all()函数
参考文档:
Python:实例讲解Python中的魔法函数(高级语法)