我找到了一种在运行时重新加载类对象方法的方法,下面是一个示例:
我首先定义了一个类,它位于文件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魔术来测试模块,有助于递归重新加载。

07-24 09:44
查看更多