Discuss / Python / 为什么属性不加下划线会报错

为什么属性不加下划线会报错

Topic source

haildceu1

#1 Created at ... [Delete] [Delete and Lock User]

RecursionError: maximum recursion depth exceeded

要特别注意:属性的方法名不要和实例变量重名。

如果重名了,就无法确定是调用方法还是属性。

正常情况,我们调用类方法时,通常这样操作:实例 = 类.方法()。

但是作为一个完美的pythoner觉得这样太麻烦了:python不应该那么复杂

于是他想出了一个方法,把实例调用类方法的操作改成,实例调用类属性的方式:实例.属性 = 值

于是这个(@property)加这个(@xx_setter)就站着实现了这一步操作。

此时,如果你要调用某个方法的时候,就可以按照实例调用类属性的方式:实例.方法 = 值。

但是如果,你的方法里面,有个属性的名字和方法名是一样的。因为编译时无法确定调用的时方法还是属性,导致无限递归,直至内存溢出。

如有不对,各位大佬请指正。


  • 1

Reply