class NoneNegative:
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 = NoneNegative("price")
def __init__(self, name, price, quantity):
self.name = name
self.price = price
self.quantity = quantity
def total(self):
return self.price * self.quantity
order1 = Order("apple", 1, 10)
Подскажите, пожалуйста, где находится простанство имен, в которое записывается (в init методе NoneNegative) self.name = name.
Откуда метод __get__ и __set__ ,берут значение атрибута self.name (return instance.__dict__[self.name]), тк запустить price.__dict__ невозможно