1、什么是魔法函数
以双下划线开头并以双下划线结尾的函数
class Company(object):
def __init__(self, employee_list):
self.employee = employee_list
def __getitem__(self, item): # 使Company可迭代
return self.employee[item]
company = Company(["zhang", "jia", "liu"])
for e in company:
print(e)
运行结果:
zhang
jia
liu
进程已结束,退出代码0
2、有哪些魔法函数?(分类)
字符串表示:
1. __repr__ # 开发模式下调用,与类的继承无关,可以在任意类中使
2. __str__ # 对字符串格式化是使用
# __str__
In [5]:
class Company(object):
def __init__(self, employee_list):
self.employee = employee_list
def __str__(self):
return ",".join(self.employee)
company = Company(["zhang", "jia", "liu"])
print(company)
Out[5]:
zhang,jia,liu
# __repr__
class Company(object):
def __init__(self, employee_list):
self.employee = employee_list
def __str__(self):
return ",".join(self.employee)
def __repr__(self):
return ",".join(self.employee)
company = Company(["zhang", "jia", "liu"])
company
zhang,jia,liu
集合、序列相关:
3. __len__
4. __getitem__
5. __setitem__
6. __delitem__
7. __contains__
迭代相关:
8. __iter__
9. __next__
可调用:
10. __call__
with上下文管理:
11. __enter__
12.__exit__
数值转换:
12. __abs__
13. __bool__
14. __int__
15. __float__
16. __hash__
17. __index__
元类相关:
18. __new__
19. __init__
属性相关:
20. __getattr__、__setattr__
21. __getattribute__、__setattribute__
22. __dir__
属性描述符:
23. __get__、__set__、__delete__
协成:
24. __await__、__aiter__、__anext__、__aenter__、__aexit__