Форум сайта python.su
0
я выполняю тестовое задание, это его условие
Офлайн
253
aybНо тогда в одном методе надо будет обрабатывать обращения ко всем атрибутам. Если надо контролировать много атрибутов это будет неудобно.
Установку атрибута можно контролировать в методе __setattr__
Офлайн
24
doza_andСамо собой. Но я предложил вариант исходя из условия задачи.
Если надо контролировать много атрибутов это будет неудобно.
Офлайн
0
Посоветуйте пожалуйста доступный источник, где объяняется что такое property и как это работает.
Потому как не совсем понятно как работает то, что вы помогли мне сделать
Офлайн
0
Как правильно устанавливать значение, почему так нельзя?:
order = Order(102,2,3)
order.discount = 103
Отредактировано megoloman (Март 22, 2016 23:39:46)
Офлайн
857
>>> class Order: ... ... def __init__(self, discount, total_price, date): ... self.discount = discount ... self.total_price = total_price ... self.date = date ... ... @property ... def discount(self): ... return self.__discount ... ... @discount.setter ... def discount(self, v): ... low, high = 0, 99 ... if not low <= v <= high: ... raise ValueError("should be in [{}; {}], " ... "but passed {}".format(low, high, v)) ... self.__discount = v ... >>> order = Order(1, 2, 3) >>> order.discount 1 >>> order.discount = 10 >>> order.discount 10 >>> order.discount = 100 Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 17, in discount ValueError: should be in [0; 99], but passed 100 >>> >>> Order(100, 2, 3) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 4, in __init__ File "<stdin>", line 17, in discount ValueError: should be in [0; 99], but passed 100 >>>
Офлайн
0
спасибо!
Офлайн