Ошибка рекурсии при использовании декораторов @property и @setter - PullRequest
0 голосов
/ 30 мая 2020
class Phone:
    def __init__(self,brand,model_name,price):
        self.brand = brand
        self.model_name = model_name
        self.price = price 
    @property
    def price(self):
        return self.price 
    @price.setter
    def price(self,new_value):
        self.price = max(new_value,0)


p1 = Phone('Asus','Asus10',102000)
print(p1.price)

Ошибка:

RecursionError: превышена максимальная глубина рекурсии

1 Ответ

0 голосов
/ 30 мая 2020

Имя свойства и имена полей совпадают. Добавление символа подчеркивания перед именем поля поможет исправить это.

class Phone:
    def __init__(self,brand,model_name,price):
        self.brand = brand
        self.model_name = model_name
        self._price = price 
    @property
    def price(self):
        return self._price 
    @price.setter
    def price(self,new_value):
        self._price = max(new_value,0)


p1 = Phone('Asus','Asus10',102000)
print(p1.price)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...