Python - 如何在类被其他模块导入之前覆盖类的功能?

oro*_*aki 7 python

我有一个正在导入的类module_x用于实例化,但首先我想覆盖其中一个类的方法来动态地包含一个特定的功能(在module_x加载之前运行的一些中间件中).

ins*_*get 2

AndiDog 和 Andrew 的回答都没有完全回答你的问题。但他们提供了能够解决您的问题的最重要的工具(两者都+1)。我将在我的回答中使用他们的建议之一:

您将需要 3 个文件:

文件1:myClass.py

class C:
    def func(self):
        #do something
Run Code Online (Sandbox Code Playgroud)

文件2:导入器.py

from myClass import *
def changeFunc():
    A = C()
    A.func = lambda : "I like pi"
    return A

if __name__ == "importer":
    A = changeFunc()
Run Code Online (Sandbox Code Playgroud)

文件3:module_x.py

from importer import *
print A.func()
Run Code Online (Sandbox Code Playgroud)

module_x 的输出将打印“I like pi”

希望这可以帮助