为了账号安全,请及时绑定邮箱和手机立即绑定

好人求解!!!

class Fib(object):

    def __init__(self, num):

        a, b, L = 0, 1, []

        self.num=num

        for n in range(num):

            L.append(a)

            a, b = b, a + b

        self.numbers = L

    def __str__(self):

        return str(self.numbers)

    __repr__ = __str__

    def __len__(self):

        return len(self.numbers)

f = Fib(10)

print f


为什么打印出来的仅仅只是L,而没有返回它的长度啊??class里不是有  return len(self.numbers)了吗?

正在回答

4 回答

print 调用的是__str__方法,应该从__str__函数中找返回值;而return len()是__len__方法的返回值,所以需要在外部调用__len__才可以

0 回复 有任何疑惑可以回复我~

print 实际上调用的是__str__方法,根据你class里面的__str__方法,所以print f 返回的是数列

class里面有个__len__方法,则是通过len() 调用,所以你需要在输入一个命令print len(f)

0 回复 有任何疑惑可以回复我~

因为print F实际上默认的就是print f.__str__

包括其他的也是,print一个东西实际上写完整了就是print它的__Str__属性

你看看代码里面你的__str__属性不就是一个列表吗

0 回复 有任何疑惑可以回复我~

这个L表示的就是这个序列啊,你要想求这个序列的长度,就必须print len(f)才行啊

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

好人求解!!!

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信