在python类中获取RecursionError

psj*_*j01 0 python

我在Python中定义了一个Product类,如下所示:

class Product:
    @property
    def price(self):
        return self.price

    @price.setter
    def price(self, value):
        if value < 10:
            raise ValueError("price can't be negative")
        self.price = value
Run Code Online (Sandbox Code Playgroud)

当我尝试设置Product(prod)新实例的price属性时:

prod = Product()
prod.price = 25
print(prod.price)
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息:

RecursionError:超过最大递归深度

有人可以在这里解释我在做什么错...

adr*_*tam 5

递归在这里发生:

@price.setter
def price(self, value):
    self.price = value
Run Code Online (Sandbox Code Playgroud)

self.price =将触发与price()设置器相同的功能。更好(即更常规)的方法是self._price用来保留您的价值。