#34. Метаклассы. Объект type | Объектно-ориентированное программирование Python
Вставка
- Опубліковано 16 жов 2024
- Курс по Python ООП: stepik.org/a/1...
Метаклассы - что это такое. Метакласс type в Python. Объект type как метакласс.
Плейлист по Python ООП: • Объектно-ориентированн...
Инфо-сайт: proproprogs.ru...
Telegram-канал: t.me/python_se...
Нет слов. Фантастика 😊. Мне казались классы вершинами программирования, а их оказывается можно на лету создавать буквально лямбда функцией 😂😂😂 Это что же, теперь все по новой ? 😂
Очень благодарен Вам, Сергей за это видео! Не то чтобы я стал пользоваться метаклассами каждый день, но я "поиграл" с ними с неделю и теперь совсем на другом уровне стал понимать, как классы работают, взаимодействуют между собой и, следовательно, как красиво и эффективно организовать код. Еще раз спасибо)
оказывается даже классы могут быть однострочными))
Преподаватель 999 левела. Помниться я пытался разобраться читая статью на Хабре... Я конечно разобрался. Но читал её раз сто наверное... А тут за десять минут всё на блюдечке... Спасибо огромное...
согласен
Сергей, отличный урок!
Я наконец-то понял, что именно возвращает type
Он просто возвращает ссылку на класс переданного в него объекта, либо ссылку на новый класс.
И самое прикольное, что если в type передать ссылку на класс, то он вернет ссылку на самого себя)
Можно даже так писать)
type(type)(int)(float)(str)(list)(tuple)(dict) и так далее
Как же это интересно!!! Спасибо!!! Ты самый лучший) Ты все сложное делаешь таким доступным для нас!!!
Сергей, спасибо за объяснение, вы отличный преподаватель. Ваш видеокурс по С++ мы смотрим с преподавателем на лекциях по ООП. По вашим курсам я учил ООП и сейчас учу Django. Про него стоит сказать отдельно. Это лучшее вложение 35$ в жизни. Огромное количество заданий, тестов, задачек на повторение. Его ценность в десятки раз выше стоимости. Спасибо вам ха такой вклад в образование! Процветания и добра!
Благодарю! Сергей, вы лучший! У вас преподавательский талант! Курс отличный!
К сожелению нет времени смотреть про ООП все видео.
Я ещё на степике пересматриваю уроки. 😁
Как всегда вы на высоте!
В одном из видео Урок №4 говорилось о классе object :
"super() возвращает ссылку на базовый класс и через нее мы вызываем метод __new__ с одним первым аргументом. Но, подождите! Что это за базовый класс? Мы наш класс Point ни от какого класса не наследовали? Да и вообще еще не изучали тему наследования! Да, поэтому, забегая вперед, скажу, что, начиная с версии Python 3, все классы автоматически и неявно наследуются от базового класса object"
Как тогда понять что type - это и есть вершина, то есть все наследуются от object а создаются с помощью type?
Просто самий лучший преподователь!!!!
Браво! Наконец я нашел свой идеальный канал по этой тематике. Ролики короткие, но насыщенные полезной информацией, интересно все! Удачи Вам и вашему труду!
Круто! Спасибо за ещё один интересный и понятный урок!
Большое спасибо. Очень нравятся ваши лекции
Спасибо. Очень интересно.
Спасибо!
спасибо
Фабрики классов - один из паттернов. Нужно бывает порождать сущности в процессе поведения, причём очень часто встречающаяся проблема
Погружаемся в недра Python. Очень круто, спасибо!
Благодарю за Ваш труд!
Спасибо, полезно знать основы языка.
Спасибо.
Так охота было идти в НОГУ с выходом видео и , потом что то пошло не так - и вот я еще на степике... :( ЕХХХХХХХ
👍👍👍👍👍
Урок #34 = Пройден
А Ф И Г Е Т Ь. Никогда бы не подумал что классы тоже можно динамически создавать. Питон в сотый раз доказывает, насколько он гибкий 🫡
Спасибо за такой замечательный материал! Сергей, можешь ответить на небольшой вопрос. Если мы создаем свой Метакласс с помощью класса или функции и потом прописываем Класс с атрибутом этого метакласса, то в какой момент создаются объекты Метакласс и Класс, во время создания экземпляра? Или Метакласс создается при чтении программы интерпретатором, а сам Класс уже создается во время создания экземпляра? Или как все-таки?
Спасибо! Метакласс type уже существует в Python и мы его не создаем. Даже если определить свой класс на основе type, то он должен быть объявлен до использования. Поэтому метаклассы есть до создания классов. Сами классы создаются в момент вызова type или соответствующего собственного метакласса (до присваивания, разумеется). Ну а дальше мы пользуемся созданными классами, как обычными ))
@@selfedu_rus Спасибо большое!
Сергей, а что из себя представляет динамическое определение класса? Это определение класса во время исполнения?
да, это когда мы класс не в тексте программы прописываем, а создаем в процессе ее выполнения (сам класс, а не объект класса)
@@selfedu_rus благодарю))
Офигеть ), интересно есть ли такое в js, c#, c++ , генератор классов)
6:10 Методы это атрибуты которые ссылаются на объект функции? Атрибуты ссылающиеся на функции, называются функциями или функциональными объектами. Они могут быть независимыми от классов или использоваться внутри методов для выполнения определенных действий.
Спасибо. Скажите, пожалуйста, в этом плейлисте сколько еще запланированных видео осталось?
два
@@selfedu_rus Понятно. А какие плейлисты будут далее, если не секрет?
@@toostunnedtospeak8048 по rest framework
@@selfedu_rus Спасибо большое!!!
Спасибо за видео, давно я ждал про этот мета класс)
Вы в комментариях к какому-то видео писали, что будет курс по машинному обучению. Можете посоветовать какую нибудь книгу или уже существующий курс на Ютубе, которые, на ваш взгляд, достаточно полно освещают материал? А еще, если Вас не затруднит, какие библиотеки нужно изучить помимо Numpy, Matplotlib, Tensorflow?
Заранее спасибо за ответ.
Спасибо! На мой взгляд вот это лучший курс по МО: ua-cam.com/video/SZkrxWhI5qM/v-deo.html
@@selfedu_rus огромное спасибо.
👍
Вот это точно черная магия)) То есть любую внешнюю функцию можно переопределить в создаваемый класс
да
В чем разница между классом созданным на базе object и на базе type?
на базе object классы не создаются, они наследуются от object
@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?
@@nwunoнаследование от type создает метакласс. Подробнее о них в конце курса.
свойства и атрибуты это одно и то же, или свойства = атрибуты - методы?
свойства я больше отношу к переменным класса, а атрибуты - это более общее (и методы и переменные и все что угодно)
а где это применяется то?)
см. следующее занятие, там об этом говорится
@@selfedu_rus ага, вот как раз смотрю))
Как написал Лутц, если вы раздумываете, нужны ли вам метаклассы или нет, то они вам точно не нужны.
всё есьм объектъ
Спасибо!