对继承c#基类的Python类应用属性类

本文关键字:应用 属性 Python 继承 基类 | 更新日期: 2023-09-27 18:05:02

我在c#中有一个基类,就像这样

   Class A
   {
     public ClassA()
     { 
     }
     .....
   }

在python中我继承了这个基类

import clr
clr.AddReferenceToFile("MyClass.dll")
from MyNamespace import ClassA    
class MySubclass(ClassA):
    def _init_(self):
        print "I'm in a subclass in python"

我在c#中也有一个属性类叫做MyAttrib("Value")

在我的c#代码后面的某个地方,我检查从ClassA派生的任何类都有属性MyAttrib应用于它,这在Python类的情况下失败。

是否有一种方法可以做到以下任何一种:

  1. 应用一个属性类的派生类在Python?
  2. 当对象被实例化时,在Python中以某种方式设置AttributeValue ?
  3. 其他的一些方法,我在想什么

我正在使用IronPython与Visual studio插件。

对继承c#基类的Python类应用属性类

我认为没有简单的方法可以做到这一点。使用一个定义了必要属性的c#存根类和它的子类肯定更容易。

但是,如果你真的需要在python中定义一个这样的类,你可以使用一个变通方法(如下所示)

基本上你可以编译(在内存中)一段c#代码并将其导入IronPython。考虑到这是一段c#代码,你可以添加属性,因此你的问题就解决了。

这当然很复杂,因为你基本上是将一种语言嵌入到另一种语言中,形成这样的链:C# <- IronPython <- C#,然后,再一次,我强烈建议你定义一个已经具有必要属性的c#类并使用它。