- Не не не не .... пока что ничего не будет ))) Сижу жду кода увидишь что ты не проставил новые переменные __set_name__)))) Поржал) Это класнно когда не заученные текст с экрана читаешь а говоришь мысли. Улыбнуло)
Забавный момент. Если имя name в __set_name__ будет совпадать с именем объекта дескриптора, сеттер дескриптора уходит в рекурсию при использовании setattr. Проблема решается, если устанавливать значения атрибута через __dict__ . Например, instance.__dict__[self.name] = value
Хм, а почему никто не заметил смешения атрибутов класса и инстанса. Попробуйте в первых 5 мин order.__dict__ и Order.__dict__ Питон конечно динамический и все терпит но можно и баг получить.
@@nicholasspezza9449 Применяю дескрипторы в своих проектах. (нефтехимия + it, если не вдаваться в подробности). Данный материал был неплохой для меня отправной точкой, за что я и поблагодарил автора. Для чего ты выдавил из себя коментарий - я не знаю, но в любом случае, раз ты наткнулся на это видео - удачи в обучении.
Можно, но дескрипторы это такая же конструкция только в классах. Можно наследовать, повторять много раз, создавать отдельные функции только под дескрипторы и так далее
@@ИванКудряшов-к6м Привет) Я думаю мы о том же, но с разных сторон. property дает меньше шансов отстрелить себе ногу, а так, да, представленное автором конечно же имеет место быть и очень полезно
- Не не не не .... пока что ничего не будет ))) Сижу жду кода увидишь что ты не проставил новые переменные __set_name__)))) Поржал) Это класнно когда не заученные текст с экрана читаешь а говоришь мысли. Улыбнуло)
Мне кажется для полноты материала нужно было бы рассказать ещё про дескрипторы данных, и non-дескрипторы а так же про их приоритеты вызова.
это к балакиреву ))
Забавный момент. Если имя name в __set_name__ будет совпадать с именем объекта дескриптора, сеттер дескриптора уходит в рекурсию при использовании setattr. Проблема решается, если устанавливать значения атрибута через __dict__ . Например, instance.__dict__[self.name] = value
или сделать так чтобы имя не совпадало добавив к ней символ типо "_"+name. но лучше instance.__dict__[self.name] = value
хорошее видео, спасибо, быстро и без воды
2 дня втыкал - зачем дескрипторы) А потом ты сказал что не красиво функцией) А красиво атрибутом. Я остановил и 5 минут с улыбкой сидел) Класс)
Спасибо
Спасибо, стало понятнее))
4:05 Это не инкапсуляция, а сокрытие
Инкапсуляция это не просто сокрытие данных, имхо
Спасибо за видео. Информации конечно не хватает но фундамент понимания работы дескрипторов заложен.
Хм, а почему никто не заметил смешения атрибутов класса и инстанса. Попробуйте в первых 5 мин order.__dict__ и Order.__dict__ Питон конечно динамический и все терпит но можно и баг получить.
чем плох магический метод getattribute и setattr?
Чтобы через них изобрести property?
Спасибо за разбор, будет полезно дальнейшее рассмотрение дескрипторов. А есть ли совет какую литературу можно почитать по advanced топикам питона?
Python к вершинам мастерства
Test Driven Web Development Python
High Performance Python
Раньше я лениво пользовался eval, и аргумент функции = имя переменной и делал декораторы или промежуточные функции 😂
Спасибо, посмотрел на скорости x2 и все равно все понял. Довольно просто объяснили для самого базового уровня!
да ничо ты не понял, максимум тупо код можешь скопипастить по памяти, а почему именно так работает тут не объяснено
@@nicholasspezza9449 Применяю дескрипторы в своих проектах. (нефтехимия + it, если не вдаваться в подробности). Данный материал был неплохой для меня отправной точкой, за что я и поблагодарил автора. Для чего ты выдавил из себя коментарий - я не знаю, но в любом случае, раз ты наткнулся на это видео - удачи в обучении.
@@LifeIsDramma то-то у нас на объектах нефтехимии постоянные утечки да "хлопки".
@@nicholasspezza9449 У "вас" может быть, я на другом материке.
@@LifeIsDramma сбежал от ответственности к кока-колам, чтоб тут не сесть за халатность и проф непригодность.
self в __get__ и __set__ - экзепляр класса дескриптора
5:31 Ошибка! Два нижних подчёркивания перед названием атрибута, в отличие от одного, РЕАЛЬНО ограничивают доступ к атрибуту извне!
Да ладно?😂 И прямо никак не добраться?
К их именами просто добавляется имя класса. Они так же доступны.
@@Mike24ruну тогда можно заюзать accessify
Серьезно? 😂😂😂 изучи тему получше
class A:
attribute = 0
_attribute = 1
__attribute = 2
sss = A()
print(sss.attribute)
print(sss._attribute)
print(sss._A__attribute)
sss._attribute = 'ABC'
sss._A__attribute = 'abc'
print(sss._attribute)
print(sss._A__attribute)
Привет передавай двум нижним подчёркиваниям, когда встретишь.
Возникло ощущение что автор сам не до конца разбирается в материале о котором рассказывает😂
Супер, все что надо понял.
на самом деле ничего ты не понял
Получается с таким подходом с декораторами увеличиваются накладные расходы на хранение данных в памяти в два раза?
Классный видос, спс от души
почему нельзя сделать @property и @amount.setter? или я чего-то не понимаю?
Можно, но дескрипторы это такая же конструкция только в классах. Можно наследовать, повторять много раз, создавать отдельные функции только под дескрипторы и так далее
Привет. В случае проперти у тебя будет дублирование кода, если еще будут атрибуты со схожими проверками например. Дескрипторы - лаконично и изящно.
@@ИванКудряшов-к6м Привет) Я думаю мы о том же, но с разных сторон.
property дает меньше шансов отстрелить себе ногу, а так, да, представленное автором конечно же имеет место быть и очень полезно
Чтобы по-настоящему защитить переменную: from accessify import private, protected
А где материал для продвинутых ? :)
А запись будет?
Инкапсуляция это не сокрытие
Инкапсуляция связывание данных и методов
у инкапсуляции два понятия в ооп