魔法函数
什么是魔法函数
以双下划线开头,以双下划线结尾,一般不要自己命名。
感觉比较像C++运算符重载的加强版,特别是数学魔法函数部分。
比如__init__
,也比如下面这个,就可以遍历类。
class called:
def __init__(self, employees):
self.employees = employees
def __getitem__(self, item):
return self.employees[item]
def __len__(self):
return len(self.employees)
Ca = called(["1", "2", "3"])
ca2 = Ca[:2]
for i in Ca:
print(i)
print(len(Ca))
魔法函数有哪些
以下是 Python 中常用的魔法函数:
__init__
: 构造函数,创建对象时调用__del__
: 析构函数,销毁对象时调用__str__
: 打印字符串的时候调用__repr__
: 打印类的信息__call__
: 将对象像函数一样调用时调用__len__
: 计算长度时调用__getitem__
: 索引操作时调用__setitem__
: 赋值操作时调用__iter__
: 迭代器,使用 for 循环遍历时调用__next__
: 迭代器,使用 for 循环遍历时调用,返回下一个值__add__
: 加法操作时调用__sub__
: 减法操作时调用__mul__
: 乘法操作时调用__truediv__
: 除法操作时调用__floordiv__
: 整除操作时调用__mod__
: 取模操作时调用__pow__
: 幂运算操作时调用__eq__
: 判断相等操作时调用__lt__
: 小于操作时调用__le__
: 小于等于操作时调用__gt__
: 大于操作时调用__ge__
: 大于等于操作时调用__ne__
: 不等于操作时调用__abs__
:绝对值- 还有很多其他的魔法函数
len函数的特殊之处
len在对自己的一些数据结构,如list等,非常快。内部还有一些其他的优化