Вопрос по метаклассам

Изучаю метаклассы в python. Немогу понять одну вещь. Допустим есть код:

class Meta(type):
    print('meta')
class User(metaclass=Meta):
    def __init__(self):
        print('__init__ User')
    print(1)
x = User()

Немогу понять, почему код выполняется в том порядке, в котором он выполняется. Разве не должно быть все в точности наоборот, т.е. сначала исполняться команда print('__init__ User'), затем команда print(1) и только после этого каманда print('meta')? Почему команды выполняются в порядке противоположенном, указанному мной? Хотелось бы прояснить этот момент.


Ответы (1 шт):

Автор решения: insolor

Метаклассы тут ни при чем.

Весь код внутри классов, но вне его методов, выполняется при объявлении класса, до создания объекта. По порядку у вас объявлен сначала класс Meta - выводится "meta", ниже объявлен класс User - выводится 1, потом вы создаете объект - выводится "__init__ User".

→ Ссылка