【发布时间】:2018-11-08 23:25:37
【问题描述】:
我正在尝试替换类中定义的函数,以便在不更改实际代码的情况下修改其功能(如内部工作原理)。 我以前从未这样做过,因此在更换它时遇到了一些问题。
更改代码将使我能够访问我的 Python 库中的包,这不是一个很好的选择。
例如,如果模块被称为 testMOD,
class testMOD(object):
def testFunc(self, variable):
var = variable
self.something = var + 12
然后我会导入 testMOD,定义一个类 (mytest = testMOD()),并访问类中定义的函数 testFunc,并将其更改为已定义的函数。
例如,
from somemodule import testMOD
mytest = testMOD()
def alternativeFunc(self, variable):
var = variable
self.something = var + 1.2
# A problem here
mytest.testFunc = alternativeFunc
如您所见,如果我只是用我定义的函数手动覆盖(?)类中的函数,它将无法正常工作。
它没有给出任何语法错误,但是,问题是被替换的函数认为'self'是函数的另一个变量,并说它需要'variable'变量的另一个参数(我猜不是个好名字)。
我想让替换函数与被替换函数完全相同,但需要额外的代码或一些小的修改。然而,“自我”几乎没有像在课堂上那样工作。
有没有办法正确实现定义的函数来替换导入类的函数?
【问题讨论】:
标签: python function class oop python-module