Протокол дескрипторов в 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 В следующих сериях

Комментарии • 43

  • @grimecrashed
    @grimecrashed Год назад

    лучшее объяснение

  • @letronas
    @letronas 11 месяцев назад +1

    В конце видео захотелось встать и похлопать.
    Реально круто! Спасибо!

  • @matveyrotte1012
    @matveyrotte1012 2 года назад +2

    Самое понятное видео по этой теме! Спасибо большое автору.

  • @MrLotrus
    @MrLotrus 2 года назад +5

    Жаль, что давно нет видео. Всё же хотелось бы увидеть и про метаклассы от тебя. Хорошо рассказываешь.

  • @heshagrade
    @heshagrade 2 года назад +3

    Капец ты грамотно объясняешь. При чём, по-моему даже без склеек , просто на одном дыхании, так сказать) Благодарю, после твоего видео протокол дескрипторов стал действительно понятным.

  • @user-ob7ri7ct7o
    @user-ob7ri7ct7o 3 месяца назад

    автор - красавчик. Благодарю за объяснение

  • @axis93cs16
    @axis93cs16 3 месяца назад

    Это гениально разжевано!!!! Спасибо!

  • @apogo78
    @apogo78 3 года назад +4

    Спасибо большое, очень понятное видео. Особенно иерархия вызова свойств. Очень ждем метаклассы)))

  • @vladimirkulakov6126
    @vladimirkulakov6126 2 года назад

    Классная подача весьма не простой темы! Спасибо!

  • @chalex2k
    @chalex2k Год назад

    Объяснил так, что сам почти понял как это работает 😄. Спасибо, действительно хорошо объяснили!

  • @vegameta
    @vegameta Год назад

    спасибо

  • @cirnocirno6101
    @cirnocirno6101 2 года назад

    Лучшее объяснение дескрипторов, которое я нашел, я бы отдал свои шекели каналу, будь тут кнопка!

  • @user-sh3qk4kw5v
    @user-sh3qk4kw5v Год назад

    Очень понятно и доходчиво. Продолжай пожалуйста записывать видео.

  • @RuSsikkkkkkk
    @RuSsikkkkkkk 3 года назад

    Все шикарно. Отличное видео. Подача материала хорошая))

  • @MrLotrus
    @MrLotrus 2 года назад

    Очень понятно объяснил. Спасибо!

  • @luckytima2315
    @luckytima2315 3 года назад +1

    Очень круто )) Почаще бы видео выходили ))

  • @yuriyt405
    @yuriyt405 2 года назад

    Спасибо, отличные видео, и про дискрипторы и про декораторы

  • @user-of5gk2cm9j
    @user-of5gk2cm9j 3 года назад

    "О сколько нам открытий чудных.." Спасибо за видео!

  • @NoName-kx3fs
    @NoName-kx3fs 3 года назад

    Годный контент, пушка гонка

  • @slavalebedev6311
    @slavalebedev6311 Год назад

    Наконец-то понял, отличное объяснение

  • @user-ug5kq4rk4b
    @user-ug5kq4rk4b 2 года назад

    Крутой канал!!! 👍👍👍

  • @hopelesssuprem1867
    @hopelesssuprem1867 2 года назад

    спасибо за полезный видос

  • @user-tn4pv9xh2s
    @user-tn4pv9xh2s  3 года назад +7

    Какие темы стоит разобрать? Метаклассы? Регулярные выражения? Контекстные Менеджеры? Whatever...

    • @exe88cution
      @exe88cution 3 года назад +11

      Метаклассы в самый раз.

    • @dariasipunina1604
      @dariasipunina1604 3 года назад +3

      Метаклассы, да.

    • @igorsorokin9142
      @igorsorokin9142 3 года назад +4

      Я бы предложил такой порядок: Метаклассы, Контекстные Менеджеры, Генераторы, Регулярные выражения. А там еще что-то добавится...

    • @yuriyt405
      @yuriyt405 2 года назад

      Уверен любая тема найдет слушателя. А я больше за re, и еще хотелось бы итераторы разобрать в классах(class Container, and ContainerIterator). Спасибо за отличные видео.

  • @exe88cution
    @exe88cution 3 года назад

    Неужели дождались новое видео)

  • @Michael201078
    @Michael201078 3 года назад

    Лайк однозначный!

  • @dodokwak
    @dodokwak 3 года назад +1

    спс. очень бы хотелось клинический пример аттрибутов из джанговских моделей, для закрепления материала для ещё несильных в вере.

  • @kotikvacia9970
    @kotikvacia9970 2 года назад

    Круть

  • @podgorniy.r
    @podgorniy.r Год назад

    Порядок поиска атрибута объекта:
    0. _getatribute_
    1. cвойство data desriptor
    2. _dict_
    3. cвойство не дескриптор или non-data desriptor
    4. raise AtributeError -> _getattr_

  • @user-li6cw2kd3r
    @user-li6cw2kd3r 3 года назад

    спасибо вам огромное!
    а когда будет следующее видео?:)

  • @user-gd1bo9kr6q
    @user-gd1bo9kr6q 3 года назад

    👍

  • @Ivan-em6jd
    @Ivan-em6jd 3 года назад

    Привет!
    Очень круто рассказываешь.
    А есть ли у тебя какой-нибудь канал или группа в телеграмме, дискорде или где-то еще?

  • @tsoer2976
    @tsoer2976 3 года назад

    Отлично. Где там мета классы?

  • @user-bb6cs6wk6y
    @user-bb6cs6wk6y 7 месяцев назад

    Спасибо тебе большое, автор, прохходя курс по ооп наткнулся на эту тему и вообще невдуплял что этл м для чего,+ подача на курсе не оч.Ты же за 20+ минут раскидал все пошагово, по полочкам.У тебя талант- хорошо объяснять

  • @artpro9191
    @artpro9191 2 года назад +1

    Где видео про метаклассы?)

  • @riam875
    @riam875 2 года назад +1

    Ну хде же МетаКлассы(( Каждый день захожу проверяю вышло видео уже или нет

  • @user-dp5hc8oq7y
    @user-dp5hc8oq7y 2 года назад

    Сам пример;
    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)

  • @dieselekin
    @dieselekin 2 года назад

    Ты зачем так слился на двух видео?! - выходило не плохо

  • @radunov.a
    @radunov.a 2 месяца назад

    Хорошее объяснение. Но пока ты его на практике раз 30 не попробуешь, вряд ли поймешь его мощь и необходимость использования в конкретном месте
    Подписался. Зря, видимо. Автор перестал заниматься каналом. Жаль, я много пересмотрел всего, эта тема действительно хорошо раскрыта на базовом уровне