#34. Метаклассы. Объект type | Объектно-ориентированное программирование Python

Поділитися
Вставка
  • Опубліковано 16 жов 2024
  • Курс по Python ООП: stepik.org/a/1...
    Метаклассы - что это такое. Метакласс type в Python. Объект type как метакласс.
    Плейлист по Python ООП: • Объектно-ориентированн...
    Инфо-сайт: proproprogs.ru...
    Telegram-канал: t.me/python_se...

КОМЕНТАРІ • 57

  • @gsm7490
    @gsm7490 7 місяців тому +7

    Нет слов. Фантастика 😊. Мне казались классы вершинами программирования, а их оказывается можно на лету создавать буквально лямбда функцией 😂😂😂 Это что же, теперь все по новой ? 😂

  • @gsm7490
    @gsm7490 7 місяців тому +2

    Очень благодарен Вам, Сергей за это видео! Не то чтобы я стал пользоваться метаклассами каждый день, но я "поиграл" с ними с неделю и теперь совсем на другом уровне стал понимать, как классы работают, взаимодействуют между собой и, следовательно, как красиво и эффективно организовать код. Еще раз спасибо)

  • @orthodox-chanel
    @orthodox-chanel Рік тому +26

    оказывается даже классы могут быть однострочными))

  • @андрейхоменко-и5я
    @андрейхоменко-и5я 2 роки тому +16

    Преподаватель 999 левела. Помниться я пытался разобраться читая статью на Хабре... Я конечно разобрался. Но читал её раз сто наверное... А тут за десять минут всё на блюдечке... Спасибо огромное...

  • @SergeyOrlov-yk9rq
    @SergeyOrlov-yk9rq 4 місяці тому +2

    Сергей, отличный урок!
    Я наконец-то понял, что именно возвращает type
    Он просто возвращает ссылку на класс переданного в него объекта, либо ссылку на новый класс.
    И самое прикольное, что если в type передать ссылку на класс, то он вернет ссылку на самого себя)
    Можно даже так писать)
    type(type)(int)(float)(str)(list)(tuple)(dict) и так далее

  • @ЕрвандАгаджанян-в3к
    @ЕрвандАгаджанян-в3к 2 роки тому +19

    Как же это интересно!!! Спасибо!!! Ты самый лучший) Ты все сложное делаешь таким доступным для нас!!!

  • @ВладиславБаранов-с2р
    @ВладиславБаранов-с2р 5 місяців тому +2

    Сергей, спасибо за объяснение, вы отличный преподаватель. Ваш видеокурс по С++ мы смотрим с преподавателем на лекциях по ООП. По вашим курсам я учил ООП и сейчас учу Django. Про него стоит сказать отдельно. Это лучшее вложение 35$ в жизни. Огромное количество заданий, тестов, задачек на повторение. Его ценность в десятки раз выше стоимости. Спасибо вам ха такой вклад в образование! Процветания и добра!

  • @KikrAzz
    @KikrAzz 2 роки тому +6

    Благодарю! Сергей, вы лучший! У вас преподавательский талант! Курс отличный!

  • @return_1101
    @return_1101 2 роки тому +3

    К сожелению нет времени смотреть про ООП все видео.
    Я ещё на степике пересматриваю уроки. 😁
    Как всегда вы на высоте!

  • @teacherit5840
    @teacherit5840 2 роки тому +7

    В одном из видео Урок №4 говорилось о классе object :
    "super() возвращает ссылку на базовый класс и через нее мы вызываем метод __new__ с одним первым аргументом. Но, подождите! Что это за базовый класс? Мы наш класс Point ни от какого класса не наследовали? Да и вообще еще не изучали тему наследования! Да, поэтому, забегая вперед, скажу, что, начиная с версии Python 3, все классы автоматически и неявно наследуются от базового класса object"
    Как тогда понять что type - это и есть вершина, то есть все наследуются от object а создаются с помощью type?

  • @Uniter_ua
    @Uniter_ua Рік тому +2

    Просто самий лучший преподователь!!!!

  • @3405-j2w
    @3405-j2w 2 роки тому +3

    Браво! Наконец я нашел свой идеальный канал по этой тематике. Ролики короткие, но насыщенные полезной информацией, интересно все! Удачи Вам и вашему труду!

  • @vladimirkulakov6126
    @vladimirkulakov6126 2 роки тому +2

    Круто! Спасибо за ещё один интересный и понятный урок!

  • @ИринаВыпова-р9ц
    @ИринаВыпова-р9ц 2 роки тому +1

    Большое спасибо. Очень нравятся ваши лекции

  • @andredru4278
    @andredru4278 7 місяців тому +1

    Спасибо. Очень интересно.

  • @ХаннаФрея
    @ХаннаФрея Рік тому +2

    Спасибо!

  • @jamjam3337
    @jamjam3337 Рік тому +2

    спасибо

  • @КириллЧе-я5ы
    @КириллЧе-я5ы 9 місяців тому +1

    Фабрики классов - один из паттернов. Нужно бывает порождать сущности в процессе поведения, причём очень часто встречающаяся проблема

  • @СергейУшаков-ц7ч
    @СергейУшаков-ц7ч 2 роки тому +3

    Погружаемся в недра Python. Очень круто, спасибо!

  • @alexen5465
    @alexen5465 2 роки тому +1

    Благодарю за Ваш труд!

  • @klalyananik
    @klalyananik 2 роки тому +1

    Спасибо, полезно знать основы языка.

  • @dimk7983
    @dimk7983 2 роки тому +1

    Спасибо.

  • @sahar_plays
    @sahar_plays 2 роки тому +1

    Так охота было идти в НОГУ с выходом видео и , потом что то пошло не так - и вот я еще на степике... :( ЕХХХХХХХ

  • @Anonim-im6ln
    @Anonim-im6ln Рік тому +1

    👍👍👍👍👍

  • @jaksonmillka
    @jaksonmillka 25 днів тому +1

    Урок #34 = Пройден
    А Ф И Г Е Т Ь. Никогда бы не подумал что классы тоже можно динамически создавать. Питон в сотый раз доказывает, насколько он гибкий 🫡

  • @АннаЛазаренко-ы9з
    @АннаЛазаренко-ы9з 2 роки тому +2

    Спасибо за такой замечательный материал! Сергей, можешь ответить на небольшой вопрос. Если мы создаем свой Метакласс с помощью класса или функции и потом прописываем Класс с атрибутом этого метакласса, то в какой момент создаются объекты Метакласс и Класс, во время создания экземпляра? Или Метакласс создается при чтении программы интерпретатором, а сам Класс уже создается во время создания экземпляра? Или как все-таки?

    • @selfedu_rus
      @selfedu_rus  2 роки тому +1

      Спасибо! Метакласс type уже существует в Python и мы его не создаем. Даже если определить свой класс на основе type, то он должен быть объявлен до использования. Поэтому метаклассы есть до создания классов. Сами классы создаются в момент вызова type или соответствующего собственного метакласса (до присваивания, разумеется). Ну а дальше мы пользуемся созданными классами, как обычными ))

    • @АннаЛазаренко-ы9з
      @АннаЛазаренко-ы9з 2 роки тому

      @@selfedu_rus Спасибо большое!

  • @podgorniy.r
    @podgorniy.r 2 роки тому +2

    Сергей, а что из себя представляет динамическое определение класса? Это определение класса во время исполнения?

    • @selfedu_rus
      @selfedu_rus  2 роки тому

      да, это когда мы класс не в тексте программы прописываем, а создаем в процессе ее выполнения (сам класс, а не объект класса)

    • @podgorniy.r
      @podgorniy.r 2 роки тому

      @@selfedu_rus благодарю))

  • @romanbush5164
    @romanbush5164 2 роки тому +2

    Офигеть ), интересно есть ли такое в js, c#, c++ , генератор классов)

  • @boulevardgaidena.k.a3555
    @boulevardgaidena.k.a3555 Рік тому +1

    6:10 Методы это атрибуты которые ссылаются на объект функции? Атрибуты ссылающиеся на функции, называются функциями или функциональными объектами. Они могут быть независимыми от классов или использоваться внутри методов для выполнения определенных действий.

  • @toostunnedtospeak8048
    @toostunnedtospeak8048 2 роки тому +3

    Спасибо. Скажите, пожалуйста, в этом плейлисте сколько еще запланированных видео осталось?

    • @selfedu_rus
      @selfedu_rus  2 роки тому +2

      два

    • @toostunnedtospeak8048
      @toostunnedtospeak8048 2 роки тому

      @@selfedu_rus Понятно. А какие плейлисты будут далее, если не секрет?

    • @selfedu_rus
      @selfedu_rus  2 роки тому +3

      @@toostunnedtospeak8048 по rest framework

    • @ivanlino3747
      @ivanlino3747 2 роки тому +1

      @@selfedu_rus Спасибо большое!!!

  • @dubinin_s
    @dubinin_s 2 роки тому +1

    Спасибо за видео, давно я ждал про этот мета класс)
    Вы в комментариях к какому-то видео писали, что будет курс по машинному обучению. Можете посоветовать какую нибудь книгу или уже существующий курс на Ютубе, которые, на ваш взгляд, достаточно полно освещают материал? А еще, если Вас не затруднит, какие библиотеки нужно изучить помимо Numpy, Matplotlib, Tensorflow?
    Заранее спасибо за ответ.

    • @selfedu_rus
      @selfedu_rus  2 роки тому +1

      Спасибо! На мой взгляд вот это лучший курс по МО: ua-cam.com/video/SZkrxWhI5qM/v-deo.html

    • @dubinin_s
      @dubinin_s 2 роки тому +1

      @@selfedu_rus огромное спасибо.

  • @ibrahimoglu
    @ibrahimoglu 2 роки тому +1

    👍

  • @CakesFly
    @CakesFly 2 роки тому +1

    Вот это точно черная магия)) То есть любую внешнюю функцию можно переопределить в создаваемый класс

  • @nwuno
    @nwuno 8 місяців тому +1

    В чем разница между классом созданным на базе object и на базе type?

    • @selfedu_rus
      @selfedu_rus  8 місяців тому

      на базе object классы не создаются, они наследуются от object

    • @nwuno
      @nwuno 8 місяців тому

      ​ @selfedu_rus ну да. наследуются. Я почему спрашиваю. Мы ранее рассматривали паттерн синглтон
      и он выглядел так
      ```
      class SIngleton(object):
      _inctances = {}
      def __new__(cls):
      if cls not in cls._inctances:
      cls._instances[cls] = super().__new__()
      return cls._instances[cls]
      ```
      а потом я наткнулся на вот такой синглтон, с наследованием от type и с вызовом магического метода __call__
      ```
      class Singleton(type):
      _instances = {}
      def __call__(cls, *args, **kwargs):
      if cls not in cls._instances:
      cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
      return cls._instances[cls]
      ```
      и теперь не могу понять почему так, в чем преимущество того или иного подхода?
      в чем разница синглтона унаследованного от object и от type? почему от object когда делают то вызывают дандер метод new а когда на type то call?

    • @selfedu_rus
      @selfedu_rus  8 місяців тому

      @@nwunoнаследование от type создает метакласс. Подробнее о них в конце курса.

  • @ДімаКуріптя
    @ДімаКуріптя 11 місяців тому +1

    свойства и атрибуты это одно и то же, или свойства = атрибуты - методы?

    • @selfedu_rus
      @selfedu_rus  11 місяців тому +1

      свойства я больше отношу к переменным класса, а атрибуты - это более общее (и методы и переменные и все что угодно)

  • @АндрейОт
    @АндрейОт 2 роки тому +1

    а где это применяется то?)

    • @selfedu_rus
      @selfedu_rus  2 роки тому +1

      см. следующее занятие, там об этом говорится

    • @АндрейОт
      @АндрейОт 2 роки тому

      @@selfedu_rus ага, вот как раз смотрю))

  • @ПавелЖуков-т8щ
    @ПавелЖуков-т8щ 2 роки тому

    Как написал Лутц, если вы раздумываете, нужны ли вам метаклассы или нет, то они вам точно не нужны.

  • @попрооолО1232
    @попрооолО1232 2 роки тому +1

    всё есьм объектъ

  • @СергейСмирнов-ь8у
    @СергейСмирнов-ь8у 2 роки тому +1

    Спасибо!