План:
-
Полиморфизм в Python. Перегрузка операторов. Вспоминаем инкапсуляцию, делегирование и наследование. Особенности проектирования систем на Python. Шаблон проектирования “команда” (1).
-
getattr и setattr. Абстрактные классы. Защита технических атрибутов. Приемы повышения удобства сопровождения кода. Шаблон проектирования “синглтон” (2).
-
Метаклассы. Особенности проектирования систем на Python. Шаблоны проектирования “фабрика классов” (3) и “наблюдатель” (4).
-
Сокеты. Вся мощь: socket, asyncore, requests. Создаем клиент и сервер, передаем данные, мгновенные сообщения и потоки данных. Шаблон проектирования “декоратор”.
----5. GIL. Как выбрать инструмент: threading, multiprocessing или asyncio? (вспомним subprocess). Для чего и в каких ситуациях использовать cython?
- Отладка, тестирование и профилирование. Удобство doctest и вся мощь unittest. Аннотации типов.