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

求DEBUG ,__len__这节的问题

class Fib(object):

    def __init__(self, num):
        self.num = num
        if num == 1:
            self.L = [1]
        elif num == 2:
            self.L = [1, 1]
        else:
            self.L = [1, 1]
            for n in range(2, num):
                self.L.append(L[-2] + L[-1])

    def __str__(self):
        return self.L

    def __len__(self):
        return self.num

f = Fib(10)
print f
print len(f)

一直报错,求问这一段写的哪里有问题。错误如下

Traceback (most recent call last):
  File "C:/Users/tstcit/Desktop/Hello_2.7.py", line 20, in <module>
    f = Fib(10)
  File "C:/Users/tstcit/Desktop/Hello_2.7.py", line 12, in __init__
    self.L.append(L[-2] + L[-1])
NameError: global name 'L' is not defined


正在回答

2 回答

class Fib(object):

    def __init__(self, num):
        self.num = num
        if num == 1:
            self.L = [0]
        elif num == 2:
            self.L = [0, 1]
        else:
            self.L = [0, 1]
            for n in range(2, num):
                self.L.append(self.L[-2] + self.L[-1])

    def __str__(self):
        return str(self.L)

    def __len__(self):
        return len(self.L)

f = Fib(10)
print f
print len(f)

自己改好了。原来是因为 append() 里带的参数 L 没有用 self.L 引用。

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

慕粉064957747

我想请教下 def __str__(self): return str(self.L) 运行结果正确,但是如果改成 def __str__(self): return self.L __repr__=__str__ 运行结果是错误的。
2016-08-31 回复 有任何疑惑可以回复我~

class Fib(object):


    def __init__(self, num):

        self.num = num


    def __str__(self):

        f = []

        for i in range(0, self.num):

            if i < 2 :

                f.append(i)

            else:

                f.append(f[i-2]+f[i-1])

        return f.__str__()

    

    def __len__(self):

        return self.num


f = Fib(10)

print f

print len(f)



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

wheeeat 提问者

谢谢你的答复,但我并不是想要一个能通过的答案就好。我想弄清楚我自己的写法错在哪了。所以抱歉不采纳你的答案了。谢谢。
2016-07-08 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

求DEBUG ,__len__这节的问题

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