魔法函数
一、什么是魔法函数
所谓魔法函数(Magic Methods),是Python的一种高级语法,允许你在类中自定义函数(函数名格式一般为__xx__(双下划线开头双下划线结尾)),并绑定到类的特殊方法中。比如在类A中自定义__str__()函数,则在调用str(A())时,会自动调用__str__()函数,并返回相应的结果。在我们平时的使用中,可能经常使用__init__函数(构造函数)和__del__函数(析构函数),其实这也是魔法函数的一种。
魔法函数一览表
1.1、 非数学运算
-
字符串表示:__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__函数
1.2 、数学运算
-
一元运算符:__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__。
1.3、其他魔法函数
-
__ unicode__()函数,__ delattr__()函数, __ del__()函数, __dict__()函数,__all__()函数:
示例:
class Company(object):
def __init__(self, employee_lias):
self.employee = employee_lias
###添加以下魔法函数会让实例可以直接进行迭代
def __getitem__(self, item):
return self.employee[item]
## 添加以下魔法函数会让实例可以实现返回长度的功能
def __len__(self):
return len(self.employee)
company = Company(['John', 'Jane', 'Doe'])
for employee in company.employee:
print(employee)
for employee in company:
print(employee)
print(len(company)) # 3
二、python的数据模型以及数据模型对python的影响
魔法函数是网络大多数人的称呼,其实魔法函数也只是python数据类型的一种
- THE END -
最后修改:2025年4月19日
共有 0 条评论