Найти - Пользователи
Полная версия: Определение свойста
Начало » Python для новичков » Определение свойста
1 2
megoloman
я выполняю тестовое задание, это его условие
doza_and
ayb
Установку атрибута можно контролировать в методе __setattr__
Но тогда в одном методе надо будет обрабатывать обращения ко всем атрибутам. Если надо контролировать много атрибутов это будет неудобно.
ayb
doza_and
Если надо контролировать много атрибутов это будет неудобно.
Само собой. Но я предложил вариант исходя из условия задачи.
megoloman
Посоветуйте пожалуйста доступный источник, где объяняется что такое property и как это работает.
Потому как не совсем понятно как работает то, что вы помогли мне сделать
megoloman
Как правильно устанавливать значение, почему так нельзя?:

order = Order(102,2,3)
order.discount = 103
py.user.next
>>> 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
>>>
megoloman
спасибо!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB