Шаг 163. Метапрограммирование. Определение декораторов как части класса
Шаг 164. Метапрограммирование. Определение декораторов как классов
Шаг 165. Метапрограммирование. Применение декораторов к методам класса и статическим методам
Шаг 166. Метапрограммирование. Написание декораторов, которые добавляют аргументы обернутым функциям
Шаг 167. Метапрограммирование. Использование декораторов для исправления определений классов
Шаг 168. Метапрограммирование. Использование метакласса для управления созданием экземпляров
Шаг 169. Метапрограммирование. Захват порядка определения атрибутов класса
Шаг 170. Метапрограммирование. Определение метакласса, принимающего необязательные аргументы
Шаг 171. Метапрограммирование. Принудительная установка аргументной сигнатуры при использовании *args и **kwargs
Шаг 172. Метапрограммирование. Принуждение к использованию соглашений о кодировании в классах
Шаг 173. Метапрограммирование. Программное определение классов
Шаг 174. Метапрограммирование. Инициализация членов класса во время определения
Шаг 175. Метапрограммирование. Реализация множественной диспетчеризации с помощью аннотаций функций
Шаг 176. Метапрограммирование. Реализация множественной диспетчеризации с помощью аннотаций функций (окончание)
Шаг 177. Метапрограммирование. Избегание повторяющихся методов свойств
Шаг 178. Метапрограммирование. Легкий способ определения менеджеров контекста
Шаг 179. Метапрограммирование. Выполнение кода с локальными побочными эффектами
Шаг 180. Метапрограммирование. Парсинг и анализ исходного кода Python