Никита Соболев (@sobolevn), независимый open-source разработчик, затворник, ретроград, на TechMeetup #6 (https://live.wecloud.events/techmeetu...) по разработке на python и его экосистеме совместно со Звуком выступил с докладом: "Вы не знаете как устроены ваши классы!"
Представьте, что однажды утром вы просыпаетесь, а кто-то украл ключевое слово class из питона. Нам нужно срочно переизобрести классы, иначе всему ООП придет конец!
Доклад даст задуматься:
-Как устроен ваш typeobject?
Какие бывают слоты, зачем они нужны?
Интересные граничные случаи: nb_add и sq_concat
Stack / Heap types
CAPI для создания классов
episods (auto):
00:00 Введение
• Приветствие и представление Никиты Соболева.
• Введение в тему классов в Python.
• Никита объясняет, что класс в Python - сложная и запутанная тема.
00:22 Презентация и цели
• Никита объясняет, что его презентация будет скорее шпаргалкой, чем полноценной презентацией.
• Он планирует осветить основные темы и показать код, который может быть сложным для чтения.
• Никита - разработчик Python, входит в топ-35 по коммитам.
02:16 Введение в доклад
• Никита рассказывает о важности классов в Python и их безопасности.
• Он предлагает переизобрести ключевое слово "класс" и его поведение.
• Никита показывает, как работает создание класса в Python.
03:03 Билды и классы
• Никита объясняет, что такое билды и как они связаны с классами.
• Он упоминает, что билды могут быть устаревшими и вызывать ошибки.
• Никита сравнивает старые и новые билды и их поведение.
04:42 Тайп и Тайпс Нью Класс
• Никита объясняет разницу между старым и новым билдами.
• Он показывает, как создавать классы с помощью нового билды.
• Никита упоминает, что новый билд поддерживает работу с дженериками.
07:08 Магические атрибуты
• Никита объясняет важность магических атрибутов, таких как dict, slots, mro, bases и другие.
• Он подчеркивает, что не все атрибуты важны для работы классов.
• Никита рассказывает о двух типах классов в Python: статических и хип-тайпах.
08:45 Хип-тайпы
• Никита объясняет, как работают хип-тайпы и их преимущества.
• Он показывает, как создавать и использовать хип-тайпы.
• Никита подчеркивает важность тестирования изменений при переходе на хип-тайпы.
10:57 Наследование
• Никита объясняет, как работает наследование в Python.
• Он упоминает нюансы наследования слотов и флагов.
• Никита завершает обсуждение, подчеркивая, что не все нюансы будут рассмотрены в рамках презентации.
11:17 Наследование и доступ через точку
• Наследование можно применять не только к типам, но и к любым объектам с базовыми классами.
• Доступ через точку в Python работает через определенные функции и порядок их выполнения.
• Порядок доступа через точку: дата-дескрипторы, инстанс-фрайблы, нондата-дескрипторы и класс-фрайблы.
13:43 Нон-дата-дескрипторы и магические методы
• Нон-дата-дескрипторы работают через магические методы, которые транслируются в сишные слоты.
• Пример: слот nb_type, который работает с методами et и rt и может быть частью спецификации последовательности.
• Пайнамбэд складывает объекты по-разному в зависимости от их типа.
15:32 Инкапсуляция и прайвод
• Инкапсуляция в Python проста, но требует понимания работы с сим-таблицей.
• Прайвод работает через создание нового namepace и добавление объектов в приватное пространство имен.
• Процесс нейм-менглинга добавляет префикс к приватным именам.
17:19 Вызов супер
• Вызов супер в Python работает через магический атрибут `__closure__`.
• Можно заставить вызов супер отправлять в другое место, что может запутать коллег.
• Пример: вызов супер без параметров в Python 2.
18:18 Заключение и ссылки
• Автор призывает подписаться на его GitHub и YouTube канал.
• Обсуждение жизни Open Source в России и консалтинга.
• Вопросы и ответы о наследовании, опенсорсе и метаклассах.
23:22 Оптимизация кода
• Обсуждение оптимизации кода на уровне байт-кода.
• Пример с магическими методами и их оптимизация.
• Возможность оптимизации на основе использования, а не вызова функций.
24:21 Подстановка имен классов
• Обсуждение подстановки имен классов.
• Объяснение, почему это сделано для имитации приватных переменных.
• Проблемы использования инстанс дикт и прай инстанс дик.
• Возможность тестирования приватных атрибутов.
25:28 Наследование функций
• Обсуждение наследования функций и его преимуществ.
• Пример использования типа dict как функции и класса.
• Сравнение с data class в Python.
• Data class переписывает класс полностью как декоратор.
26:43 Завершение и благодарности
• Выбор лучшего вопроса и благодарность спикеру.
• Напоминание о встрече вечером.
#tech_meetup #python #tech_meetup6
---
Есть вопросы?
Добавляйся в нашу уютную общалку TechCommon/Python (https://t.me/tech_common) 👈
Следи за будущими анонсами на основном канале @tech_meetup (https://t.me/tech_meetup) или в @tech_meetup_py (https://t.me/tech_meetup_py) если интересен только Python ❤
Информация по комментариям в разработке