Python
Перезагрузка модулей Python
Пусть в файле my_module.py написано определение класса:
Пусть в файле 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
1 457
ДАЛЬШЕ ПО ТЕМЕ