如何在Python shell中重新加载一个类?
- 论坛
- 如何在Python shell中重新加载一个类?
8 浏览
如何在Python shell中重新加载一个类?
如果我导入一个定义在同名包中的类的模块,它会被导入为一个类,而不是一个模块,这是因为父包的__init__.py文件。详见不同目录导入结果不同。在Python shell或ipython shell中,如果我执行
from MyPak import MyMod
MyModule总是作为类导入,因此我无法重新加载它(reload()只适用于模块)。再次执行
from MyPak import MyMod
似乎不会更新类的定义。有人能提供一种在Python shell中更新类的方法吗?
附注:不重启Python解释器。
附附注:万一你手头有代码并想测试它:我实际上是在谈论BioPython,并且我正在处理Bio.PDB.PDBParser。我有一个ipython shell(v0.10)和编辑PDBParser.py文件。只是找不到在ipython中重新加载它的方法。
所以这是我做的:
# 启动ipython v0.10 import Bio from Bio.PDB import PDBParser p = PDBParser() s = p.get_structure() # 然后我在PDBParser.py文件中进行了一些更改,例如简单地打印一些文本 del Bio del PDBParser del s import Bio # 或者reload(Bio)而不删除所有对象 from Bio.PDB import PDBParser p = PDBParser() s = p.get_structure() # 预期的更改后输出没有看到 :(
我看不到打印的文本。更改似乎没有被应用。