Описание
В данном курсе рассматриваются все аспекты объектно-ориентированного подхода на Python. Мы начнем с инкапсуляции и интересного ключевого слова __slots__, далее мы поговорим о том, зачем нужны пакеты и как сделать свою виртуальную «песочницу» для проекта в Python.
Далее мы рассматриваем функцию как объект и изучаем в чем от этого будет польза разработчику. В этом разделе наиболее важная тема – декораторы, которые очень сильно упрощают код с кроссфукнциональностью
После этого мы переходим к жизненному циклу объекта, изучаем как на основе существующих базовых типов создать свой и зачем это нужно, разбираемся с вопросами, что происходит, когда и как объект создается и уничтожается
Далее мы учимся возвращать системе ее ресурсы, которые она одалживает разработчику, а он не всегда их отдает. Мы узнаем, как это можно гарантировать с помощью менеджера контекстов
После этого, мы учимся складывать, вычитать и умножать классы пользователя, используя для этого магические методы Python.
И в завершении тренинга, мы говорим о том, как скрыть алгоритм обхода структур данных или генерации данных на основе итератов, операторов yield, а также рассматриваем способы генерации структур данных с использованием упрощенного синтаксиса Python.

удостоверение о повышении квалификации государственного образца
Цели
Целевая аудитория
Предварительная подготовка
Способность понимать логические потоки кода.
Базовый курс по Python или опыт работы с ним (личные проекты, предыдущие работы и т.д.)
Разбираемые темы
-
1. Лучшие практики программирования на языке Python
- Документирование кода.
- __slots__
- Статические поля и методы.
- Организация кода по модулям.
-
2. Функция как объект
- Работа с параметрами функций.
- Понятия замыкания.
- Декоратор, функтор, предикат.
-
3. Жизненный цикл объекта
- Кастомизация процесса создания объекта.
- Работа с несуществующими полями и методами объекта.
- Кастомизация процесса разрушения объекта.
-
4. Работа с ресурсами
- Понятие менеджера контекста.
- Реализация собственного менеджера контекста.
-
5. Работа с объектом
- Магические методы для операций сравнения объектов.
- Магические методы для реализации арифметических операций и операций приведения типов.
- Магические методы для кастомизации представления объекта в потоке вывода.
- Магические методы для кастомизации клонирования объектов.
-
6. Итератор и генератор
- Концепция итератора.
- Реализация классического итератора в Python.
- Оператор yield.
- Генераторы структур данных на основе list comprehensive выражений.

О проектах:
Занимался разработкой системы сбора разрозненной и противоречивой информации из различных источников для нужд крупного промышленного предприятия. Занимался как разработкой веб-интерфейса, так и ядра системы, а также развертыванием приложения на сервере. Реализовал несколько нетривиальных алгоритмов, разрешающих противоречия в данных из различных источников. Руководил небольшой командой разработчиков.Применял методы машинного обучения для оптимизации процессов производства во время работы на компанию Apple. Развил идею руководителя до полноценного внутреннего продукта, нашедшего широкое применение внутри многих производственных подразделений компании. Поначалу вел почти всю разработку единолично, совмещая обязанности аналитика, Frontend- и Backend-инженера; со временем, когда команда постепенно выросла до 10 человек, принял на себя роль техлида.