Программирование 2.0
Программирование 2.0
  • 2
  • 22 914
Протокол дескрипторов в Python
В этом видео мы поговорим о двух взаимосвязанных вещах - атрибутах объектов и протоколе дескрипторов в 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 В следующих сериях
zhlédnutí: 9 450

Video

Декораторы в Python
zhlédnutí 13KPřed 3 lety
В этом видео мы поговорим о декораторах в Python. На собеседованиях о них часто спрашивают. Мы детально рассмотрим механизмы работы декораторов на примере lru_cache из functools и сами напишем его простенький аналог. Узнаем как делаеть декораторы на основе функций и классов, какие вспомогательные инструменты для этого есть, как делать декораторы с параметрами и что можно декорировать с их помощ...

Komentáře

  • @radunov.a
    @radunov.a Před 3 měsíci

    Ощущение, что на функции Фибоначчи не самый лучший способ показать декораторы

  • @radunov.a
    @radunov.a Před 3 měsíci

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

  • @user-ob7ri7ct7o
    @user-ob7ri7ct7o Před 4 měsíci

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

  • @axis93cs16
    @axis93cs16 Před 4 měsíci

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

  • @maksimvolkov8892
    @maksimvolkov8892 Před 5 měsíci

    Господи, если вы кодер и вам нужно двадцати минутное видео, что бв понять декораторы, может программирование это не ваше?

    • @asd1978ful
      @asd1978ful Před 5 měsíci

      Все понятно в двух случаях: когда действительно понял и когда на самом деле не разобрался. Декораторы - достаточно сложный и объёмный момент в python. И двадцати минут на самом деле мало, если только у вас не второй вариант.

  • @user-bb6cs6wk6y
    @user-bb6cs6wk6y Před 8 měsíci

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

  • @letronas
    @letronas Před 11 měsíci

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

  • @letronas
    @letronas Před 11 měsíci

    Может для jupyter не надо, но в PyCharm вам нужно будет сделать импорт from functools import wraps Чтобы воспользоваться декоратором wraps. P.S. Самое понятное и живое объяснение декораторов, особенно с параметрами.

  • @grimecrashed
    @grimecrashed Před rokem

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

  • @vegameta
    @vegameta Před rokem

    спасибо

  • @slavalebedev6311
    @slavalebedev6311 Před rokem

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

  • @kavajno
    @kavajno Před rokem

    Неплохо рассказано о декораторах. Я много промотрел виде ваше лучшее. Не все умеют доносить информацию

  • @podgorniy.r
    @podgorniy.r Před rokem

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

  • @chalex2k
    @chalex2k Před rokem

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

  • @user-sh3qk4kw5v
    @user-sh3qk4kw5v Před rokem

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

  • @matveyrotte1012
    @matveyrotte1012 Před 2 lety

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

  • @danilfg
    @danilfg Před 2 lety

    Спасибо за видео! Стало понятнее.

  • @heshagrade
    @heshagrade Před 2 lety

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

  • @user-bd4jn6cy1k
    @user-bd4jn6cy1k Před 2 lety

    Что за IDE в которой ты пишешь код?

  • @hopelesssuprem1867
    @hopelesssuprem1867 Před 2 lety

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

  • @getteg6468
    @getteg6468 Před 2 lety

    так что такое декоратор, нифига не понял

  • @vladimirkulakov6126
    @vladimirkulakov6126 Před 2 lety

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

  • @dieselekin
    @dieselekin Před 2 lety

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

  • @cirnocirno6101
    @cirnocirno6101 Před 2 lety

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

  • @MrLotrus
    @MrLotrus Před 2 lety

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

  • @MrLotrus
    @MrLotrus Před 2 lety

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

  • @gienek_mscislawski
    @gienek_mscislawski Před 2 lety

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

    • @efenof
      @efenof Před rokem

      Да, сложно объясняет, смотрю его когда уже выучу, для повторения

  • @user-dq9lk9id3b
    @user-dq9lk9id3b Před 2 lety

    Классный урок! Побольше бы таких наглядных уроков!

  • @yuriyt405
    @yuriyt405 Před 2 lety

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

  • @artpro9191
    @artpro9191 Před 2 lety

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

  • @kotikvacia9970
    @kotikvacia9970 Před 2 lety

    Круть

  • @riam875
    @riam875 Před 2 lety

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

  • @FXUNDPLXGG
    @FXUNDPLXGG Před 2 lety

    def fibonacci(n): a, b = 0, 1 for _ in range(n): yield(a) a, b = b, a + b count = 10 fibo_list = [None] * count g = fibonacci(count) for i in range(count): fibo_list[i] = (next(g)) print(fibo_list) Мне кажется так лучше создать список чисел Фибоначчи Этот код может сделать список Фибоначчи из 10000 чисел за несколько миллисекунд и он будет занимать не больше 120 байт

  • @user-dp5hc8oq7y
    @user-dp5hc8oq7y Před 3 lety

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

  • @user-dp5hc8oq7y
    @user-dp5hc8oq7y Před 3 lety

    День добрый. А как сделать что бы этот пример работал с приватными атрибутами?

  • @user-ug5kq4rk4b
    @user-ug5kq4rk4b Před 3 lety

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

  • @user-pq6jv2hr5c
    @user-pq6jv2hr5c Před 3 lety

    Автор, у тебя отлично получается. Почему так мало роликов выкладываешь? Давай ещё)

  • @user-li6cw2kd3r
    @user-li6cw2kd3r Před 3 lety

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

  • @Michael201078
    @Michael201078 Před 3 lety

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

  • @Michael201078
    @Michael201078 Před 3 lety

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

  • @-MaCkRage-
    @-MaCkRage- Před 3 lety

    Я не знаю кто Вы, но объясняете вы прекрасно. Спасибо.

  • @somebodysomeone3054
    @somebodysomeone3054 Před 3 lety

    Понятно и полезно!

  • @89inoj
    @89inoj Před 3 lety

    Автор, продолжай запись. У тебя действительно хорошо получается.

  • @tsoer2976
    @tsoer2976 Před 3 lety

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

  • @luckytima2315
    @luckytima2315 Před 3 lety

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

  • @user-of5gk2cm9j
    @user-of5gk2cm9j Před 3 lety

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

  • @NoName-kx3fs
    @NoName-kx3fs Před 3 lety

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

  • @RuSsikkkkkkk
    @RuSsikkkkkkk Před 3 lety

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

  • @Ivan-em6jd
    @Ivan-em6jd Před 3 lety

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

  • @vladimiru8602
    @vladimiru8602 Před 3 lety

    О, канал совсем молодой, оказывается. Вообще не подумал бы, качество - топ 👍 Не знал раньше про декораторы, было очень полезно. Спасибо автору. И ютубу, что привёл меня сюда.(просто всплыло в рекомендациях, я специально не искал)