как перезагрузить класс в оболочке python?

Если я импортировать модуль, определяющий класс с тем же именем, принадлежащим пакету, он импортируется как класс, а не как модуль из-за __init__.py родительского пакета. Подробнее см. разные результаты импорта в разные каталоги . В оболочке Python или ipython, если я сделаю

из MyPak import MyMod

MyModule всегда импортируется как класс, поэтому я не могу его перезагрузить (reload () работает только для модулей). Выполнить

из MyPak, импортировать MyMod

снова, похоже, не обновляет определение класса. Может ли кто-нибудь предложить способ обновить класс в оболочке python?

пс. без перезапуска интерпретатора python.

ппс . На всякий случай, если у вас есть код и вы хотите его протестировать: я говорю о BioPython и работаю над Bio.PDB.PDBParser. У меня есть оболочка ipython (v0.10), и я редактирую PDBParser.py. Просто не было возможности перезагрузить его в ipython.

вот что я сделал:

# start ipython v0.10
import Bio
from Bio.PDB import PDBParser
p = PDBParser()
s = p.get_structure()
# then I make changes,e.g. simply print some text, in PDBParser.py
del Bio
del PDBParser
del s
import Bio  # or reload(Bio) without deleting all the objects
from Bio.PDB import PDBParser
p = PDBParser()
s = p.get_structure() # expected output after change not seen :(

Я не мог видеть напечатанный текст.Изменения как-то не применялись.

63
задан Chris_Rands 31 October 2018 в 16:20
поделиться