鱼C论坛

 找回密码
 立即注册
查看: 2583|回复: 5

[已解决]python3 关于类 len定义的问腿

[复制链接]
发表于 2018-9-19 18:47:51 | 显示全部楼层 |阅读模式
3鱼币
  1. class LenSupport:
  2.     def __len__(self):
  3.         return 42

  4. >>> obj = LenSupport()
  5. >>> len(obj)
  6. 42
复制代码



我的问题是:len(obj)为何返回的是42,是因为LenSupport改变了自身的__len__方法么?有没有哪位大神能帮助我理解理解
最佳答案
2018-9-19 18:47:52
双下滑线的__len__魔法方法就是在调用len()方法的行为,len(obj)调用时的行为就是return 42

最佳答案

查看完整内容

双下滑线的__len__魔法方法就是在调用len()方法的行为,len(obj)调用时的行为就是return 42
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-19 18:47:52 | 显示全部楼层    本楼为最佳答案   
双下滑线的__len__魔法方法就是在调用len()方法的行为,len(obj)调用时的行为就是return 42
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-19 19:13:03 From FishC Mobile | 显示全部楼层
嗯,被覆盖了。但是只是针对这一个类所实例化的对象而已
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-20 10:35:51 | 显示全部楼层
def __len__()定义这个方法的时候就把原来的bif覆盖了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-20 10:48:25 | 显示全部楼层
LenSupport默认继承object类,本身并没有__len__魔法方法哦,你添加了这个魔法方法的话然后又实例化了一个对象obj,当len(obj)时就会自动调用__len__方法里的代码啊,也就是return 42
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-21 10:07:51 | 显示全部楼层
这个跟你输入什么没关系吧,反正return都是42
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 08:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表