date: 2021-06-29title: python之calllen方法 #标题
tags: #标签
categories: python # 分类

记录下python中的__call____len__方法使用场景。参考:老男孩教育

call

  1. class A:
  2. pass
  3. def __call__(self, *args, **kwargs):
  4. print('abcdefg')
  5. # 对象后面加括号,就可以调用到类中的 __call__ 方法
  6. # 一般很少用,只有在源码中会看到
  7. A()()

len

  1. # len(对象)需要在这个对象中实现__len__方法
  2. # 假设代码如下
  3. class Cls:
  4. def __init__(self, name):
  5. self.name = name
  6. self.students = []
  7. py22 = Cls('python22期')
  8. py22.students.append('张三')
  9. py22.students.append('李四')
  10. py22.students.append('王五')
  11. # 最后要求这个students列表中的人个数,只能通过如下方式去求
  12. print(len(py22.students))
  13. # 但是如果将代码改为如下,就不一样了,可以直接len(对象名)去求
  14. class Cls:
  15. def __init__(self, name):
  16. self.name = name
  17. self.students = []
  18. def __len__(self): # 当类中实现了__len__方法,就可以直接len(对象名)来调用这个__len__方法了
  19. return len(self.students)
  20. py22 = Cls('python22期')
  21. py22.students.append('张三')
  22. py22.students.append('李四')
  23. py22.students.append('王五')
  24. # len()方法说白了就是去找对象中的__len__函数,像list,dict那些支持len()计算长度的数据类型中,都有__len__方法
  25. print(len(py22))