Форум сайта python.su
Добрый вечер, имею смутное представление о дескрипторах и свойствах, так как знакомлюсь с ними в первый раз. Коротко, что я непонятно:
class De: def __init__(self): self.common = 0 def __get__(self, instance, owner): return self.common def __set__(self, instance, value): self.common = value def __delete__(self, instance): del self.common #??? Протокол обосрали class Me: at = De() def __init__(self): self.name = 'Hello' b = Me() print(b.at)
class Me: def __init__(self): self.attr = 10 @property def bomb(self): return 'Something' @bomb.setter def bomb(self, value): self.attr = value @bomb.deleter def bomb(self): del self.attr b = Me() print(b.bomb) b.bomb = 10000
def cond():...
bomb = bomb.setter(cond) # Возможно где-то ошибка (голова не хочет трудиться моя)
Отредактировано li_4 (Ноя. 28, 2017 18:01:42)
Офлайн
li_4Нифига не приходится
Почему вечно приходится писать одно и тоже название метода (bomb)
# -*- coding:utf-8 -*- class Me: def __init__(self): self.attr = 10 @property def bomb(self): return self.attr @bomb.setter def c(self, value): self.attr = value m = Me() m.c = 3 print(m.bomb) >>> 3
Офлайн
FishHook
FishHookКак я понял на практике, и в вашем коде -
Нифига не приходится
Отредактировано li_4 (Ноя. 29, 2017 15:53:28)
Офлайн
li_4
Для начала, я бы на вашем месте разобрался, что такое декоратор в питоне. Дескрипторы и декораторы это настолько далекие друг от друга понятия, что смешивать их в одной проблематике никак нельзя.
Офлайн
FishHook
Да, неплохой совет. Но жопа в том что лутц ставит сначала дескрипторы и свойства в программу обучения, а потом уже декораторы. Мне дали представление что такое декораторы ему и следую.
Офлайн
FishHook
Я дико извиняюсь, я перепутал в своём сообщение декоратор с дескриптором (не знаю о чём тогда думал)
Офлайн