Есть следующий код:
class NonNegative:
def __init__(self, name):
self.name = name
def __get__(self, instance, owner):
return instance.__dict__[self.name]
def __set__(self, instance, value):
if value < 0:
raise ValueError('Cannot be negative.')
instance.__dict__[self.name] = value
class Order:
price = NonNegative('price')
def __init__(self, name, price, quantity):
self._name = name
self.price = price
apple_order = Order('apple', 1, 10)
apple_order.price = -10
-смотрю через дабаггер, когда выполняется строчка "
self.price = price" идет переход к "
__set__" класса "
NonNegative". Почему такое происходит? Мы же никак неиспользуем инстанс "
price" у "
NonNegative". На сколько я понимаю "
self.price" в
self.price = price это просто поле инстанса класса "
Order".