Встречается на собеседованиях • сегодня
Какие методы метакласса (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
интервью вопросы и ответы