>>> l = [3]
>>> l()
Traceback (most recent call last):
File "<pyshell#77>", line 1, in <module>
l()
TypeError: 'list' object is not callable
是把list对象当函数使了。 l = [3] 然后执行了l()
>>> k = []
>>> k = k.append(4)
>>> k
>>> k
>>> print(k)
None
>>> k = k.append(4)
Traceback (most recent call last):
File "<pyshell#103>", line 1, in <module>
k = k.append(4)
AttributeError: 'NoneType' object has no attribute 'append'
append方法是没有返回值的。也就是说,上述语句第一次会成功执行,并且将k赋值为None;第二次调用就会报错,因为None是不能调.append方法的,修改方法也简单,k.append(i)就可以了,不要接返回值。
self. & self._
属性赋值时,默认自动调用setattr方法
self.
是对属性的访问,使用它的时候编译器会判断_
是否为空,为空的话自动实例化。会自动访问get
和set
方法。_
是对实例变量的访问,我们没有实例化它,不能使用。_
,外部变量则用self.
。getter
方法中,不要再使用self
。否则会重复调用getter
方法,造成死循环。