我对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?
答案 0 :(得分:2)
IronPython使用反射来处理.NET类型。
.GetType()
方法从CLR调用类型。它与调用
clr.GetClrType(type(testPythonClass))
如果你打电话
,应该会有所不同type(testPythonClass)
你将获得python类。