IronPython对象的类型

时间:2017-07-19 17:12:06

标签: python ironpython

我对IronPython中的对象类型有疑问。我在C#中创建了.NET类型(我创建了MyClass类)并编译了我的类库项目。假设我已经以这种方式创建了TestLibrary.dll。然后我在IronPython项目中引用了这个库并创建了IronPython类,该类继承自我的TestLibrary.dll中的.NET类型。我的代码如下所示:

import clr
clr.AddReferenceToFileAndPath(r'C:\TestLibrary\TestLibrary\bin\Debug\TestLibrary.dll')

from TestLibrary import *

class TestPythonClass(MyClass):
    def doSomething(self):
        print('Hello')

但是当我创建TestPythonClass的一个对象时,我发现该对象的类型是'IronPython.NewTypes.TestLibrary.MyClass_15 $ 16'。

testPythonClass = TestPythonClass()
typeToString = testPythonClass.GetType().ToString()

任何人都可以向我提供一些额外的信息,为什么我的IronPython对象的类型实际上是声明为TestLibrary.dll的类型?为什么type不是TestPythonClass?

1 个答案:

答案 0 :(得分:2)

IronPython使用反射来处理.NET类型。

.GetType()方法从CLR调用类型。它与调用

相同
clr.GetClrType(type(testPythonClass))

如果你打电话

,应该会有所不同
type(testPythonClass)

你将获得python类。