Junior — Middle
84
Объясните, что такое метакласс в контексте объектно-ориентированного программирования и как он используется?
Companies where asked
СБЕР Бизнес
Оптимакрос
Answer from AI
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 и других инструментов, где нужно контролировать структуру классов.