Sobes.tech
Junior — Middle
86

Объясните, что такое метакласс в контексте объектно-ориентированного программирования и как он используется?

Компании, где спрашивали
СБЕР Бизнес
МТСМТС
Оптимакрос
РунитиРунити
БилайнБилайн

Ответ от нейросети

sobes.tech AI

Метакласс в Python — это класс, который создаёт другие классы. Проще говоря, класс — это объект, а метакласс — это «класс для классов». По умолчанию все классы создаются с помощью метакласса type.

Метаклассы позволяют контролировать процесс создания классов: можно изменять атрибуты, добавлять методы или проверять структуру класса во время его определения.

Пример использования метакласса для автоматического добавления метода в класс:

class AutoMethodMeta(type):
    def __new__(cls, name, bases, attrs):
        attrs['hello'] = lambda self: f"Hello from {name}!"
        return super().__new__(cls, name, bases, attrs)

class MyClass(metaclass=AutoMethodMeta):
    pass

obj = MyClass()
print(obj.hello())  # Выведет: Hello from MyClass!

Метаклассы полезны для создания фреймворков, ORM и других инструментов, где нужно контролировать структуру классов.