有一个疑问
Topic source为什么要加_,因为你函数名和变量名重复了,_加这个代表一个变量。 为什么最后加不加_都可以,加_是代表直接调用变量计算,不加_是通过函数值取得变量值计算,相当于get(value)方法
我的理解是,如果你去掉下划线,在调用s.width的时候访问的就是width()这个写起来是方法但按属性用的方法,然后这个方法返回的又是width,然后由于这个width已经是一个方法名了,它返回的就是它本身,就形成一个递归函数,然而这个递归没有退出的条件,就造成了“无限递归”的错误。后面在调用的时候访问的width并不是属性,而是width()这个方法,这个方法不接受外部参数,直接返回s的属性值。
- 1
cgspt
self._height为什么不能去掉下划线,去掉之后显示RecursionError: maximum recursion depth exceeded
不太理解,而且前面加完下划线到最后self.width*self.height不加下划线也是可以运行成功的,这是为什么呢