快捷导航

大神求教!!!跪求!!这破问题想得急死人!!

classFib(object):def__init__(self,num):self.num=numself.fibo=[0,1]#这里有个疑问,属性中没有fibo,怎么可以直接定义???而且不定义self.fibo而是定义L之类的就不行,总之要加上self.这是为什么?????foriinrange(num-2):self.fibo.append(self.fibo[-2]+self.fibo[-1])#def结束,这里为什么没有return????def__str__(self):returnstr(self.fibo)def__len__(self):returnlen(self.fibo)f=Fib(10)printfprintlen(f)self.fibo=[0,1]#这里有个疑问,属性中没有fibo,怎么可以直接定义???而且不定义self.fibo而是定义L之类的就不行,总之要加上self.这是为什么?????classFib(object):def__call__(self,num):L=[0,1]foriinrange(num-2):L.append(L[-2]+L[-1])returnL#可是在__call__这里,又可以直接用L,这到底怎么回事,真希望大神帮我详细解答一下,我现在很糊!!f=Fib()printf(10)

免责声明:本内容仅代表回答者见解不代表本站观点,请谨慎对待。

版权声明:作者保留权利,不代表本站立场。

回复

使用道具 举报

参与会员2

1、属性中没有fibo是可以直接定义的,如果你定义L也是可以的,但是没有意义,因为你定义L的话,后面的代码需要都修改,而加上self这是python约定俗成的写法,在类中,self只能在方法中使用表示该方法的实例属性,也就是每个实例可以设置不同的值而不会相互影响;在方法下不使用self表示是全局变量。
2、在__call__这里,L=[0,1]是全局变量,是可以直接使用的。
回复

使用道具 举报

首先init是构造函数,不需要返回值所以不用return
def__init__(self,num):self.num=numself.fibo=[0,1]#这里有个疑问,属性中没有fibo,怎么可以直接定义???#而且不定义self.fibo而是定义L之类的就不行,总之要加上self.这是为什么?????因为你定义为fibo的话你在其他函数中就不能使用如_str_,他是局部的变量,出了这个函数就被释放了而定义为self就是属于类的。可以在外面使用
回复

使用道具 举报

可能感兴趣的问答

发新帖
  • 微信访问
  • 手机APP