我找到了一种在运行时重新加载类对象方法的方法,下面是一个示例:
我首先定义了一个类,它位于文件test.py上。
class A:
def __init_(self):
pass
def Message(self):
print "1"
然后在linux中启动python shell,并执行以下代码:
>>> from test import A
>>> a = A()
>>> a.Message()
1
现在我动态地查看test.py,并更改方法“message”:
class A:
def __init_(self):
pass
def Message(self):
print "2"
但是当我在Python shell中执行a.Message()时,结果总是“1”
而不是“2”
如何编写代码以使对象“a.message”执行更新的代码。
非常感谢!
楚
最佳答案
要在交互式解释器中重新关联模块,可以使用
import test
reload(test)
from test import A
但是这不会影响已经存在的
A
的实例——它们仍然是旧类型A
,因此有旧的方法。我认为改变现有的情况是不可能的,我也不认为这是个好主意。顺便说一下,我建议使用IPython进行代码测试它使用
%reload
魔术和%run
魔术来测试模块,有助于递归重新加载。