Протокол дескрипторов в Python
HTML-код
- Опубликовано: 18 июн 2024
- В этом видео мы поговорим о двух взаимосвязанных вещах - атрибутах объектов и протоколе дескрипторов в Python. Несмотря на то, что в дескрипторах нет ничего сложного, есть целый ряд нюансов, связанных с тем, как этот механизм работает. На простых примерах мы разберем порядок вычисления значения атрибута объекта и возможности вклиниться своим кодом в разные этапы этого механизма. Так же мы обсудим несколько возможных применений дескрипторов.
0:00 Вступление
0:41 Обращение к свойствам класса через свойства объекта
1:42 Приоритет словаря объекта над свойствами класса
2:40 Метод _get_
3:22 Дескриптор без данных (Non-data descriptor)
3:43 Приоритет словаря объекта над дескриптором без данных
3:59 Немного шаманства
4:37 Метод _set_
5:11 Дескриптор данных (Data descriptor)
5:26 Приоритет дескриптора данных над словарём объекта
5:34 Обращение к словарю объекта из методов дескрипторов
6:38 Декоратор @property умеет всё то же самое
8:08 Метод _set_name_
8:53 Делаем методы _get_ и _set_ более универсальными
9:36 Единый код для управления разными свойствами
10:10 Как работает __set_name__?
10:25 Дескриптор, как средство логирования любого доступа к атрибутам
10:40 Дескриптор, как средство валидации значений атрибутов
12:03 Дескриптор, как средство для работы с колонками в ORM
12:26 Метод _getattr_ не мешает работе с дескрипторов
13:35 Метод _getattribute_ отключает механизм дескрипторов
14:36 Порядок поиска атрибута объекта
17:15 Исключение AttributeError
18:12 Заключение
19:33 В следующих сериях
лучшее объяснение
В конце видео захотелось встать и похлопать.
Реально круто! Спасибо!
Самое понятное видео по этой теме! Спасибо большое автору.
Жаль, что давно нет видео. Всё же хотелось бы увидеть и про метаклассы от тебя. Хорошо рассказываешь.
Капец ты грамотно объясняешь. При чём, по-моему даже без склеек , просто на одном дыхании, так сказать) Благодарю, после твоего видео протокол дескрипторов стал действительно понятным.
автор - красавчик. Благодарю за объяснение
Это гениально разжевано!!!! Спасибо!
Спасибо большое, очень понятное видео. Особенно иерархия вызова свойств. Очень ждем метаклассы)))
Классная подача весьма не простой темы! Спасибо!
Объяснил так, что сам почти понял как это работает 😄. Спасибо, действительно хорошо объяснили!
спасибо
Лучшее объяснение дескрипторов, которое я нашел, я бы отдал свои шекели каналу, будь тут кнопка!
Очень понятно и доходчиво. Продолжай пожалуйста записывать видео.
Все шикарно. Отличное видео. Подача материала хорошая))
Очень понятно объяснил. Спасибо!
Очень круто )) Почаще бы видео выходили ))
Спасибо, отличные видео, и про дискрипторы и про декораторы
"О сколько нам открытий чудных.." Спасибо за видео!
Годный контент, пушка гонка
Наконец-то понял, отличное объяснение
Крутой канал!!! 👍👍👍
спасибо за полезный видос
Какие темы стоит разобрать? Метаклассы? Регулярные выражения? Контекстные Менеджеры? Whatever...
Метаклассы в самый раз.
Метаклассы, да.
Я бы предложил такой порядок: Метаклассы, Контекстные Менеджеры, Генераторы, Регулярные выражения. А там еще что-то добавится...
Уверен любая тема найдет слушателя. А я больше за re, и еще хотелось бы итераторы разобрать в классах(class Container, and ContainerIterator). Спасибо за отличные видео.
Неужели дождались новое видео)
Лайк однозначный!
спс. очень бы хотелось клинический пример аттрибутов из джанговских моделей, для закрепления материала для ещё несильных в вере.
Круть
Порядок поиска атрибута объекта:
0. _getatribute_
1. cвойство data desriptor
2. _dict_
3. cвойство не дескриптор или non-data desriptor
4. raise AtributeError -> _getattr_
спасибо вам огромное!
а когда будет следующее видео?:)
👍
Привет!
Очень круто рассказываешь.
А есть ли у тебя какой-нибудь канал или группа в телеграмме, дискорде или где-то еще?
Отлично. Где там мета классы?
Спасибо тебе большое, автор, прохходя курс по ооп наткнулся на эту тему и вообще невдуплял что этл м для чего,+ подача на курсе не оч.Ты же за 20+ минут раскидал все пошагово, по полочкам.У тебя талант- хорошо объяснять
Где видео про метаклассы?)
Ну хде же МетаКлассы(( Каждый день захожу проверяю вышло видео уже или нет
Сам пример;
class B:
def __set_name__(self, obj, name):
print(f'__set_name__{name}')
self.name = '_' + name
def __get__(self, instance, owner):
print(F'__get__{self.name}')
return instance.__dict__[self.name]
def __set__(self, instance, value):
print(f'__set__{self.name}')
instance.__dict__[self.name] = value
class X:
a = 1
b = B()
c = B()
def __init__(self, b, c ):
self.__b = b
self.__c = c
x = X(1,2)
print(x.a)
print(x.b)
x.c = 8
print(x.c)
Ты зачем так слился на двух видео?! - выходило не плохо
Хорошее объяснение. Но пока ты его на практике раз 30 не попробуешь, вряд ли поймешь его мощь и необходимость использования в конкретном месте
Подписался. Зря, видимо. Автор перестал заниматься каналом. Жаль, я много пересмотрел всего, эта тема действительно хорошо раскрыта на базовом уровне