🔹 Метапрограммирование в Python — делать код о коде 🔹 Как программно создавать функции/классы и зачем это нужно? 🔸 Метапрограммирование решает проблему повторяющегося boilerplate и меняющихся схем: генерируя код программно, вы уменьшаете дубли и централизуете логику.
🔸 Инструменты: рефлексия (inspect/hasattr — читать структуру объектов), type() для динамических классов, декоратор (decorator) для обёртки поведения, метакласс (metaclass) для контроля создания классов.
🔸 Когда применять: ORM, API-клиенты, плагинные системы или генерация моделей по схемам — там, где ручной код быстро устаревает.
🔸 Пример: создаём класс через type() и программно навешиваем декоратор логирования.
MyClass = type('MyClass', (object,), {'val': 1, 'inc': lambda self: setattr(self,'val', self.val+1)}) def log(fn): def w(a,**k): print('call', fn.name) return fn(a,**k) return w MyClass.inc = log(MyClass.inc) o = MyClass() o.inc()
📚 Метапрограммирование убирает повтор и даёт контроль: используйте type() для простых генераций, декораторы для поведения на уровне функций/методов, метаклассы — для правил при создании классов.
➡️ Мы в Telegram - Сетке - Дзен Буду рад вашей реакции здесь⬇️
В этом посте были ссылки, но мы их удалили по правилам Сетки