Уведомления

Группа в Telegram: @pythonsu

#1 Март 22, 2016 22:16:17

megoloman
Зарегистрирован: 2015-10-26
Сообщения: 113
Репутация: +  0  -
Профиль   Отправить e-mail  

Определение свойста

я выполняю тестовое задание, это его условие

Офлайн

#2 Март 22, 2016 22:18:48

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Определение свойста

ayb
Установку атрибута можно контролировать в методе __setattr__
Но тогда в одном методе надо будет обрабатывать обращения ко всем атрибутам. Если надо контролировать много атрибутов это будет неудобно.



Офлайн

#3 Март 22, 2016 22:23:48

ayb
Зарегистрирован: 2014-04-01
Сообщения: 297
Репутация: +  24  -
Профиль   Отправить e-mail  

Определение свойста

doza_and
Если надо контролировать много атрибутов это будет неудобно.
Само собой. Но я предложил вариант исходя из условия задачи.

Офлайн

#4 Март 22, 2016 23:26:00

megoloman
Зарегистрирован: 2015-10-26
Сообщения: 113
Репутация: +  0  -
Профиль   Отправить e-mail  

Определение свойста

Посоветуйте пожалуйста доступный источник, где объяняется что такое property и как это работает.
Потому как не совсем понятно как работает то, что вы помогли мне сделать

Офлайн

#5 Март 22, 2016 23:38:44

megoloman
Зарегистрирован: 2015-10-26
Сообщения: 113
Репутация: +  0  -
Профиль   Отправить e-mail  

Определение свойста

Как правильно устанавливать значение, почему так нельзя?:

order = Order(102,2,3)
order.discount = 103

Отредактировано megoloman (Март 22, 2016 23:39:46)

Офлайн

#6 Март 23, 2016 03:57:40

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Определение свойста

>>> 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
>>>



Офлайн

#7 Март 23, 2016 23:50:53

megoloman
Зарегистрирован: 2015-10-26
Сообщения: 113
Репутация: +  0  -
Профиль   Отправить e-mail  

Определение свойста

спасибо!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version