Если я вызываю функцию с глобальной областью действия внутри тела класса, даже не создавая экземпляр класса, функция вызывается при выполнении или импорте модуля. Я не могу найти объяснения такому поведению. Почему вызов функции тела класса выполняется, когда класс не упоминается после его определения?
Вот пример (это единственный код в demo.py) :
Код: Выделить всё
def myfunc():
print("Function has been called.")
class Demo:
myfunc()
При выполнении файла неожиданный вывод:
Код: Выделить всё
F:\demo_project\.venv\Scripts\python.exe F:\demo_project\demo.py
Function has been called.
Это происходит в процедурном порядке (как и ожидалось), поэтому, если я создам еще один идентичный класс с именем Demo2 после нескольких вставленных операторов, myfunc() выполнится снова после вставленные операторы были выполнены.
Подробнее здесь:
https://stackoverflow.com/questions/792 ... uted-or-im