👩‍💻 Метаклассы: управление созданием классов



Метаклассы управляют созданием других классов. Они позволяют изменять или контролировать поведение классов при их определении.



1. Создание метакласса

Метакласс представляет из себя обычный класс, наследуемый от type. Его методы управляют созданием класса.

class MyMeta(type):

def __new__(cls, name, bases, dct):

dct['new_attr'] = 'added by metaclass'

return super().__new__(cls, name, bases, dct)


Добавляет новый атрибут new_attr в создаваемые классы.



2. Пример использования

Создадим класс с использованием метакласса:

class MyClass(metaclass=MyMeta):

pass



print(MyClass.new_attr) # 'added by metaclass'


Автоматически добавил атрибут в класс MyClass.



3. Модификация поведения классов


Метаклассы могут проверять или изменять методы класса:

class MethodCheckMeta(type):

def __new__(cls, name, bases, dct):

if 'my_method' not in dct:

raise TypeError("You must define 'my_method'")

return super().__new__(cls, name, bases, dct)


Если класс не определяет метод my_method, будет вызвано исключение.



👉 Python Ready | #техсобес