将属性类应用于继承C#基类的Python类

时间:2011-08-09 09:57:44

标签: c# python attributes ironpython

我在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. 其他一些方式来做我正在考虑的事情
  4. 我正在使用IronPython和Visual Studio的插件。

1 个答案:

答案 0 :(得分:0)

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

但是,如果 确实 需要在python中定义类似的类,则可以使用变通方法(如图所示here

基本上你可以编译(在内存中)一段C#代码并在IronPython中导入它。鉴于这是一段C#代码,您可以添加属性,从而解决您的问题。

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