Встречается на 1% собеседований по Python
Какие методы метакласса (metaclass) вызываются при объявление класса
При объявлении класса метакласс вызывает следующие методы в порядке их выполнения:
-
__prepare__(metacls, name, bases, **kwargs)- вызывается первым, создает пространство имен для класса (возвращает dict-like объект). Необязательный метод. -
__new__(metacls, name, bases, namespace, **kwargs)- создает и возвращает новый класс. Здесь можно модифицировать атрибуты класса до его создания.
__init__(cls, name, bases, namespace, **kwargs)- инициализирует созданный класс. Аналог__init__для обычных классов.
Пример:
python
class Meta(type):
@classmethod
def __prepare__(metacls, name, bases, **kwargs):
print("__prepare__")
return {}
def __new__(metacls, name, bases, namespace, **kwargs):
print("__new__")
return super().__new__(metacls, name, bases, namespace)
def __init__(cls, name, bases, namespace, **kwargs):
print("__init__")
super().__init__(name, bases, namespace)
class MyClass(metaclass=Meta):
passВывод:
text
__prepare__
__new__
__init__
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы