Дескрипторы в Python - максимальная инкапсуляция
HTML-код
- Опубликовано: 18 июн 2024
- Дескрипторы это полезный инструмент инкапсуляции, который дополняет проперти. Я использую оба инструмента в зависимости от ситуации, дескрипторы для набора какой-то базы "фундаментальных" объектов, проперти для тех частей логики, которые уж точно должны оставаться внутри самого класса.
Группа в тг, в которой я даю дополнительный контекст к своим видео - t.me/PythonClinicChnl
Таймкоды:
00:00 - интро
00:27 - чтение и запись
11:52 - только чтение
16:54 - чтение, запись и удаление
19:02 - выводы
Афигенно, все объяснил, спасибо
Канал достоин 100к подписчиков! Пересмотрел много контента по теме, ваш контент один из лучших. Без лишней шелухи, обстоятельно и понятно.
спасибо) мы дорастём)
Интересные видео. Спасибо вам
всегда рад)
Урок, после которого я понял, как работают дескрипторы 😊
отлично, цель достигнута)
Огонь!
запишите, пожалуйста, видео про протоколы дескрипоров
я думаю меня многие поддержат, что все видео исключительной пользы. Изучаю Python месяцев 9, но не встречал такой глубокий контент
спасибо за отзыв)
Отличный контент. Хорошо что ютуб выдал вас в рекомендациях. Не зря подписался. Скажите, а будет ли видео про декораторы классов и методов классов? Спасибо
обязательно будет, но пока трудно сказать когда именно, очень много всего запланировано по ООП
@@pythonclinic Здорово! Значит колокольчик был нажат не зря. А на какую тему следующее видео планируется? Уже интересно.
во вторник будет следующее видео о процессах и автоматизации работы с ними
Почему так мало просмотров? Я не помню по чьей рекомендации подписался. Но точно не зря это сделал.
спасибо вам и всем, кто рекомендует и делится моими материалами) ещё вырастем)
спасибо за труд, доступно и понятно)
но с такой реализацией сеттера через дескриптор не получится создать два и более атрибутов класса
значит ли это, что если тебе необходим только геттер, лучше использовать проперти?
да, я бы так и делал, с проперти в такой ситуации будет несколько проще
еще как помню есть дандер метод __set_name__() для динамической генерации имен атрибутов, если не ошибаюсь
ага, есть такая штука, позволяет задать имя класса, к которому дескриптор должен быть привязан (помогает с name mangling)
15:23, was_set будет глобальным на все экземпляры Dog? Значит в другом экземпляре я уже не смогу установить свойство?
тут такая идея, изначально этот атрибут глобальный, чтобы все экземпляры по умолчанию имели значение False, но потом в любом экземпляре можно переопределить и опустить его на уровень экземпляра уже
Из личного опыта понял, для нас, русскоязычных, одна из основополагающих проблем в освоении программирования - это то что мы не можем читать и думать на языке программистов и документации. Доки на английском, большинство актуальной и топовой инфы на английском. Подсказки в консоли и интерпретаторе на английском. И даже умея читать на английском, мы не можем так же нативно воспринимать инфу как носитель. Вывод, английский нужно учить обязательно! Чем больше вы в английском, тем лучше и легче!
PS. Спасибо автору, отличный контент!
вот прям согласен на тысячу процентов, всем своим студентам советую на первом же занятии уделять внимание, потому что низкий уровень инглиша означает проблемы с доками и средой, но ещё и проблемы на интервью
@pythonclinic не понимаю 11:24, откуда берётся атрибут _Name__name, в частности что такое _Name?
и ещё вопрос, почему при создании двух разных экземпляров класса Dog создаётся только 1 экземпляр класса Name?
потому что дескриптор отрабатывает только один раз, при создании самого класса Dog, но не при создании экземпляра Dog, и вот этот экземпляр класса Name будет на уровне класса Dog разделяться между всеми экземплярами Dog
_Name это кусок псевдонимизации закрытого атрибута в классе Name, глянь плиз видео про инкапсуляцию, там подробно рассказывается, откуда оно берётся
В уроке создавались дескрипторы для атрибута класса? А что насчет атрибутов экземпляров класса, когда значения у каждого свои, я так понял:
class Dog:
def __init__(self):
self.color = Color() #
что такого?
с технической точки зрения это возможно, но я бы на атрибуты экземпляров не транслировал, при наследовании будет трудно потом это разрулить
Господи, неужели хоть одно толковое видео о дескрипторах на русском языке! Спасибо , стало понятно)
отлично, я рад)
Какой ужасный стиль использования property, брр.
сам в шоке
Иммено из-за декораторов и редко использовал property, открыли мне более интересный стиль)@@pythonclinic