+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

从父类包装方法

发布于2020-10-12 12:43     阅读(1021)     评论(0)     点赞(9)     收藏(3)


0

1

2

3

4

5

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

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

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

在运行时,引擎将选择器传递给AddUniverse。问题是找不到该选择器类型的右过载。为了解决此问题,我添加了一个新的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方法,但是抛出了一个异常,说“属性是只读的”。或者,我可以使用此方法基于包装器创建“ Add_Universe”方法。

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

那可能吗?你会怎么做?


解决方案


暂无回答

0

1

2

3

4

5



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接: https://www.pythonheidong.com/blog/article/580240/6276de852f3ee963ba64/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

9 0
收藏该文
已收藏

评论内容:(最多支持255个字符)