__len__方法

1、 注意:__len__ 方法一般与 len(对象) 方法搭配使用。即先在__len__方法中说明需要求类中的哪个属性(假如是属性a)的长度,当使用 len(对象A) 方法时会得到对象A的该属性(就是属性a)的长度。

2、 当执行到 len(对象) 方法时,会自动调用对象的__len__方法,表示用来求该对象的某个属性(变量)的元素的个数。如果类中没有定义__len__方法,就会报类型错误。
why is TypeError
至于为什么会TypeError,是因为python中的 len() 方法,默认是用来求字符串 len(str)、元组 len(tuple_1)、列表 list(list_1) 的元素个数的(len方法括号中是列表、元组或字符串)。现在你用来求对象的某个属性的元素个数(len方法括号中是对象),相当于这个方法还没有被定义和重载,当然会报类型错误。

3、再次强调,len(对象) 方法,是用来求对象的 某个属性(变量) 的元素的个数,会自动调用对象的__len__(self) 方法

4、要让 len() 函数正常工作,类中必须提供一个特殊方法__len__,它返回元素的个数

请看下面的三个实验对比

对比一:求对象A中成员变量a的元素个数

# main.pyclass Test(object):def __init__(self, arg):self.a = argself.b = [1, 2, 3, 4]def __len__(self):return len(self.a)  # 求对象中成员变量a的元素个数,这里会输出12if __name__ == '__main__':passpassA = Test('Hello, world')print(len(A))    # 这里,函数 len(A) 用来求对象A中成员变量a的元素个数,会自动调用对象的__len__方法# 使用 len(对象) 方法时,如果对象中没有实现 __len__ 方法,就会报类型错误。

结果:12

对比二:求对象A中成员变量b的元素个数

# main.pyclass Test(object):def __init__(self, arg):self.a = argself.b = [1, 2, 3, 4]def __len__(self):return len(self.b)  # 求对象中成员变量b的元素个数,这里会输出4if __name__ == '__main__':passpassA = Test('Hello, world')print(len(A))    # 这里,函数 len(A) 用来求对象A中成员变量b的元素个数,会自动调用对象的__len__方法# 使用 len(对象) 方法时,如果对象中没有实现 __len__ 方法,就会报类型错误。

结果:4

对比三:求对象A中成员变量b的元素个数,类中没有实现 __len__方法,会报类型错误

# main.pyclass Test(object):def __init__(self, arg):self.a = argself.b = [1, 2, 3, 4]# def __len__(self):#     return len(self.b)if __name__ == '__main__':passpassA = Test('Hello, world')print(len(A))    # 这里,函数 len(A) 用来求对象A中成员变量b的元素个数,会自动调用对象的__len__方法# 使用 len(对象) 方法时,如果对象中没有实现 __len__ 方法,就会报类型错误。

报错:

python 中的 __len__(self) 方法相关推荐

  1. chatgpt赋能python:Python中的s.len()方法介绍

    Python中的s.len()方法介绍 Python中有各种字符串处理方法,其中s.len()方法是一个重要的方法之一.s.len()返回一个字符串s的长度.这是一个非常基本的方法,但是在很多情况下都 ...

  2. python中类方法与实例方法的区别-Python中的对象,方法,类,实例,函数用法分析...

    本文实例分析了Python中的对象,方法,类,实例,函数用法.分享给大家供大家参考.具体分析如下: Python是一个完全面向对象的语言.不仅实例是对象,类,函数,方法也都是对象. class Foo ...

  3. python grpc 并发_在Python中使用gRPC的方法示例【h】

    本文介绍了在Python中使用gRPC的方法示例,分享给大家,具体如下: 使用Protocol Buffers的跨平台RPC系统. 安装 使用 pip gRPC由两个部分构成,grpcio 和 gRP ...

  4. python中列表的sort方法_python中列表的sort方法使用详解

    内容简介:python中列表的sort方法使用详解 一.基本形式 列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的. 排序,数字.字符 ...

  5. python中立方表示_在Python中表示一个对象的方法

    在 Python 中一切都是对象.如果要在 Python 中表示一个对象,除了定义 class 外还有哪些方式呢?我们今天就来盘点一下. 0x00 dict 字典或映射存储 KV 键值对,它对查找.插 ...

  6. python中使用grpc方法示例_在Python中使用gRPC的方法示例

    本文介绍了在Python中使用gRPC的方法示例,分享给大家,具体如下: 使用Protocol Buffers的跨平台RPC系统. 安装 使用 pip pip install grpcio pip i ...

  7. python list sort by,python中List的sort方法指南

    简单记一下python中List的sort方法(或者sorted内建函数)的用法. List的元素可以是各种东西,字符串,字典,自己定义的类等. sorted函数用法如下: sorted(data, ...

  8. 【转】关于python中re模块split方法的使用

    注:最近在研究文本处理,需要用到正则切割文本,所以收索到了这篇文章,很有用,谢谢原作者. 原址:http://blog.sciencenet.cn/blog-314114-775285.html 关于 ...

  9. python中shelf_Python cmds.shelfLayout方法代码示例

    本文整理汇总了Python中maya.cmds.shelfLayout方法的典型用法代码示例.如果您正苦于以下问题:Python cmds.shelfLayout方法的具体用法?Python cmds ...

最新文章

  1. c语言常用数据类型转换整理
  2. 路痴的单身小菡 BFS求最短路径+DFS求路径数
  3. PG git pull
  4. session机制和cookie机制
  5. 【Spring 】Synchronized锁在Spring事务管理下,为啥还线程不安全?
  6. dp动态规划_最长上升子序列问题
  7. 安装Windows版C / GCC编译器
  8. Ubuntu 20.04 国内源
  9. B树与B+树 有动画
  10. centos6.6 x86_64 install virtualbox 增强功能和ulipad
  11. 不仅仅是一种爱好:了解中国的电竞市场
  12. 英语单词12大前缀3大词性后缀
  13. 计算机自动维护有用吗,Win10怎么开启自动维护功能?系统自动维护有什么作用?...
  14. 清空了回收站的文件还能找回吗
  15. 企业服务器固态硬盘寿命,SSD固态硬盘使用寿命短?_企业存储技术与评测-中关村在线...
  16. c++字符串转换为数字(stoi, stol, stoul, stoull, stof, stod, stold)
  17. Zabbix监控之从zookeeper中获取Kafka消费进度和lag
  18. 数组的创建和初始化(C语言)
  19. Flutter组件--Image 图片组件,圆形图片
  20. 分享给大家几个好玩的网站

热门文章

  1. 最实用的Word快捷键大全
  2. 在ABAQUS中使用多孔介质模型
  3. 浙大版C语言PTA练习答案
  4. 使用华为云跑自己的深度学习模型教程
  5. 行业垂直类网站的电子商务
  6. 平均数编码:针对高基数定性特征(类别特征)的数据预处理/特征工程
  7. STM32——NFC门禁模块(RC522)
  8. 导出音乐软件歌单为txt文本
  9. Ubuntu配置和使用cups打印服务器
  10. 学无止境,我爱python