【发布时间】:2021-07-17 13:34:56
【问题描述】:
class Product:
def __init__(self, value):
self.price = value
@property
def price(self):
return self.price
@price.setter
def price(self, value):
self.price = value
p = Product(90)
运行上面的代码会抛出这个错误RecursionError: maximum recursion depth exceeded,说self.price = value被重复了多次。但是,当我在装饰器 property 和 price.setter 下使用双下划线即 __self.price 为 self.price 加上前缀时,错误就会消失。
class Product:
def __init__(self, value):
self.price = value
@property
def price(self):
return self.__price
@price.setter
def price(self, value):
self.__price = value
p = Product(90)
双下划线到底有什么变化?
【问题讨论】:
标签: python class recursion python-decorators