我正在使用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)
。
这可能吗?你会怎么做?