为什么属性不加下划线会报错
Topic source要特别注意:属性的方法名不要和实例变量重名。
如果重名了,就无法确定是调用方法还是属性。
正常情况,我们调用类方法时,通常这样操作:实例 = 类.方法()。
但是作为一个完美的pythoner觉得这样太麻烦了:python不应该那么复杂
于是他想出了一个方法,把实例调用类方法的操作改成,实例调用类属性的方式:实例.属性 = 值
于是这个(@property)加这个(@xx_setter)就站着实现了这一步操作。
此时,如果你要调用某个方法的时候,就可以按照实例调用类属性的方式:实例.方法 = 值。
但是如果,你的方法里面,有个属性的名字和方法名是一样的。因为编译时无法确定调用的时方法还是属性,导致无限递归,直至内存溢出。
如有不对,各位大佬请指正。
- 1
haildceu1
RecursionError: maximum recursion depth exceeded