从父类包装方法

时间:2016-12-09 00:18:07

标签: python

我正在使用Python.Net在C#中嵌入python。在我的python脚本中,python类继承了一个C#类:

# algo.py:
class MyCustomAlgo(QCAlgorithm):
    def Initialize(self):
        self.AddUniverse(selector)

AddUniverse方法在父类QCAlgorithm(C#)中定义。

在运行时,引擎将选择器传递给AddUniverse。问题是右重载,找不到该选择器类型。为了解决这个问题,我添加了一个新的AddMethod,它覆盖了继承的AddMethod:

# helper.py:
def AddUniverse(self, selector):
    selector = Func[DateTime, IEnumerable[String]](selector)
    super(self.__class__, self).AddUniverse(selector)

如果我将此代码段添加到第一个代码段,它就可以正常工作。但是,我需要将这些代码片段放在两个不同的文件中(例如:algo.py和helper.py)。

我尝试使用PyObject.SetAttr方法,但它抛出一个异常,说"属性是只读的#34;。或者,我可以使用此方法创建一个" Add_Universe"基于包装器的方法。

但目标是保留确切的签名:self.AddUniverse(selector)

这可能吗?你会怎么做?

0 个答案:

没有答案