Top.Mail.Ru
Ответы
Аватар пользователя
8мес
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Python. Слишком много раз вызывается setter

Подскажите, постоянно такое происходит - много раз почему то вызывает setter
class Rectangle:
__slots__ = '__widht', 'height'

def __init__(self, a, b):
self.widht = a
self.height = b

@property
def widht(self):
return self.__widht

@widht.setter
def widht(self, value):
print('setter called')
self.widht = value

где я туплю?

По дате
По рейтингу
Аватар пользователя
Новичок
8мес

Просто оставлю здесь

Аватар пользователя
Оракул
8мес
12345678910111213141516171819202122232425262728
 class Rectangle:  
    __slots__ = '__width', '__height'  
 
    def __init__(self, a, b):  
        self.width = a  
        self.height = b  
 
    @property  
    def width(self):  
        return self.__width  
 
    @width.setter  
    def width(self, value):  
        if value <= 0: 
            raise ValueError("Width must be positive") 
        print('setter called')  
        self.__width = value 
 
    @property  
    def height(self):  
        return self.__height  
 
    @height.setter  
    def height(self, value):  
        if value <= 0: 
            raise ValueError("Height must be positive") 
        self.__height = value 
 
Аватар пользователя
Просветленный
8мес

чекай свой init, также у тебя slots без отп, поэтому он не видит сеттер. ты ещё внутри сеттера widht несколько раз присваиваешь ему значение, что выводит бесконечный цикл