类十三 发表于 2018-9-19 18:47:51

python3 关于类 len定义的问腿

class LenSupport:
    def __len__(self):
      return 42

>>> obj = LenSupport()
>>> len(obj)
42


我的问题是:len(obj)为何返回的是42,是因为LenSupport改变了自身的__len__方法么?有没有哪位大神能帮助我理解理解

无名老张4646 发表于 2018-9-19 18:47:52

双下滑线的__len__魔法方法就是在调用len()方法的行为,len(obj)调用时的行为就是return 42

claws0n 发表于 2018-9-19 19:13:03

嗯,被覆盖了。但是只是针对这一个类所实例化的对象而已

雨林哥 发表于 2018-9-20 10:35:51

def __len__()定义这个方法的时候就把原来的bif覆盖了

不二° 发表于 2018-9-20 10:48:25

LenSupport默认继承object类,本身并没有__len__魔法方法哦,你添加了这个魔法方法的话然后又实例化了一个对象obj,当len(obj)时就会自动调用__len__方法里的代码啊,也就是return 42

Alexander.li 发表于 2018-9-21 10:07:51

这个跟你输入什么没关系吧,反正return都是42
页: [1]
查看完整版本: python3 关于类 len定义的问腿