Stack Overflow на русском Asked by user364464 on January 18, 2021
Изучаю метаклассы в 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')
? Почему команды выполняются в порядке противоположенном, указанному мной? Хотелось бы прояснить этот момент.
Метаклассы тут ни при чем.
Весь код внутри классов, но вне его методов, выполняется при объявлении класса, до создания объекта. По порядку у вас объявлен сначала класс Meta
- выводится "meta", ниже объявлен класс User
- выводится 1, потом вы создаете объект - выводится "__init__ User"
.
Correct answer by insolor on January 18, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP