如何在Python中重新加载类对象方法的代码?

chu*_*all 5 python methods reload

我找到了一种在运行时重新加载类对象的方法的方法\xef\xbc\x8chere 就是例子:\n我首先定义了一个类 A,它位于文件 test.py 中。

\n\n
class A:\n    def __init_(self):\n        pass\n    def Message(self):\n        print "1"\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后我在linux中启动Python shell,并执行以下代码:

\n\n
>>> from test import A\n>>> a = A()\n>>> a.Message()\n1\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在我在运行中 vi test.py,并更改方法“Message”:

\n\n
class A:\n    def __init_(self):\n        pass\n    def Message(self):\n        print "2"\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是当我在 Python shell 中执行 a.Message() 时,结果始终是“1”而不是“2”

\n\n

我如何编写代码以使对象“a.Message”执行更新的代码。

\n\n

非常感谢!

\n\n

\n

Sve*_*ach 4

要在交互式解释器中重新加载模块,您可以使用

import test
reload(test)
from test import A
Run Code Online (Sandbox Code Playgroud)

但这不会影响A已经存在的实例——它们仍然是旧类型A,因此具有旧方法。我认为改变现有的实例是不可能的,我也不认为这是一个好主意。

顺便说一句,我建议使用IPython进行代码测试。它使用%reload魔法和(甚至更有用)%run测试模块的魔法来促进递归重新加载。