什么是魔法函数
- 以__开头和__结尾的函数 如:
def __init__
- 系统内设,对象的属性功能,在相应语法调用时会触发,如使用下标
class Nums(object):
def __init__(self, nums):
self.nums = nums
# 当下标函数调用时触发
# def __getitem__(self, item):
# return self.nums[item]
nums = Nums(['1', '2', '3', '4', '5'])
nums1 = nums[:1]
下标触发了对象的 def __getitem__
函数,若删除该函数,则会报错非没有下标的对象当做下标使用了
常见魔法函数
①非数学运算:
- 字符串表示:
__repr__,__str__
- 集合、序列相关:
__len__,__getitem__,__setitem__,__delitem__,__contains__
- 迭代相关:
__iter__,__next__
- 可调用:
__call__
- with上下文管理:
__enter__,__exit__
- 数值转换:
__abs__,__bool__,__int__,__float__,__hash__,__index__,
- 元类相关:
__new__,__init__
- 属性描述符:
__get__,__set__,__delete__
- 属性相关:
__getattr__,__setattr__,__getattribute__,__setattribute__
- 协程:
__await__,__aiter__,__anext__,__aenter__,__aexit__