Kodduu Python: post #1543 — TG.ME

🔥 Метаклассы: Динамическое создание классов и авто-регистрация плагинов


from typing import Dict, Type

class PluginMeta(type):
"""Метакласс, который автоматически регистрирует все плагины."""
registry: Dict[str, Type] = {}

def __new__(mcs, name, bases, attrs):
cls = super().__new__(mcs, name, bases, attrs)
if name != "PluginBase":
mcs.registry[name] = cls
print(f"🔌 Зарегистрирован плагин: {name}")
return cls


class PluginBase(metaclass=PluginMeta):
"""Базовый класс для всех плагинов."""
def run(self):
raise NotImplementedError("Плагин должен реализовать метод run()")


class DataProcessor(PluginBase):
"""Пример плагина."""
def run(self):
print("📊 Обработка данных...")


class ReportGenerator(PluginBase):
"""Ещё один плагин."""
def run(self):
print("📄 Генерация отчёта...")


if __name__ == "__main__":
try:
print(f"Всего зарегистрировано плагинов: {len(PluginMeta.registry)}")

for name, plugin_cls in PluginMeta.registry.items():
plugin = plugin_cls()
plugin.run()

print("\n Все плагины успешно выполнены!")
except Exception as e:
print(f"Ошибка: {e}")

📌 Метаклассы позволяют контролировать создание классов: автоматически регистрировать плагины, добавлять методы, валидировать атрибуты и многое другое. Это один из самых мощных и «волшебных» инструментов Python для создания фреймворков и плагин-систем.

Подпишись 👉🏻 @KodduuPython 🤖
July 20, 2026 118 2