Метка: reload

Перезагрузка модулей Python

Пусть в файле my_module.py написано определение класса:

class A: ...

Пишем такой код в другом файле:

from my_module import A
a = A()
from my_module import A

print(isinstance(a, A))

Ответ – True. Система модулей Python только единожды будет запускать каждый импорируемый файл. Второй import не возымеет действия, и класс А будет тем же, что и был раньше.

Бонус: если вам нужно принудительно перезагрузить модуль – воспользуйтесь функцией reload из importlib. Попробуем. В файл mymodule.py напишем:

class A:
    # будем видеть, когда класс загружен
    print('loaded class A')

В другой файле:

from importlib import reload

import mymodule
a = my_module.A()
mymodule = reload(mymodule)

print(isinstance(a, mymodule.A))

Вывод программы:

loaded class A
loaded class A
False

Запустить ход.

Специально для канала @pyway. Подписывайтесь на мой канал в Телеграм @pyway 👈