date: 2021-06-29title: python之call和len方法 #标题
tags: #标签
categories: python # 分类
记录下python中的__call__和__len__方法使用场景。参考:老男孩教育。
call
class A:passdef __call__(self, *args, **kwargs):print('abcdefg')# 对象后面加括号,就可以调用到类中的 __call__ 方法# 一般很少用,只有在源码中会看到A()()
len
# len(对象)需要在这个对象中实现__len__方法# 假设代码如下class Cls:def __init__(self, name):self.name = nameself.students = []py22 = Cls('python22期')py22.students.append('张三')py22.students.append('李四')py22.students.append('王五')# 最后要求这个students列表中的人个数,只能通过如下方式去求print(len(py22.students))# 但是如果将代码改为如下,就不一样了,可以直接len(对象名)去求class Cls:def __init__(self, name):self.name = nameself.students = []def __len__(self): # 当类中实现了__len__方法,就可以直接len(对象名)来调用这个__len__方法了return len(self.students)py22 = Cls('python22期')py22.students.append('张三')py22.students.append('李四')py22.students.append('王五')# len()方法说白了就是去找对象中的__len__函数,像list,dict那些支持len()计算长度的数据类型中,都有__len__方法print(len(py22))
