如何让泛型工作Python.NET和CPython一起。使用Python.NET Using Generics中的下标语法时出错
TypeError: unsubscriptable object
使用python2.7.11+pythonnet==2.1.0.dev1
^{pr2}$我也尝试过pythonnet==2.0.0,并使用releasewinx86构建表单github ca15fe8,但得到了相同的错误。在
使用IronPython-2.7.5:
>ipy.exe
IronPython 2.7.5 (2.7.5.0) on .NET 4.0.30319.0 (32-bit)
Type "help", "copyright", "credits" or "license" for more information.
>>> import clr
>>> from System import EventHandler
>>> from System import EventArgs
>>> EventHandler[EventArgs]
<type 'EventHandler[EventArgs]'>
可以显式获取泛型类对象:
数字表示泛型参数的数目。在
这不起作用,因为在
System
命名空间中存在EventHandler
类的泛型和非泛型版本。名称已重载。您需要指出您需要通用版本。在我不知道到底是怎么回事Python.NET处理重载的类/函数,但它似乎有一个
Overloads
属性。试试这样的方法看看结果如何:(这不起作用)
看起来不像Python.NET具有解析重载类名的方法,每个重载都被视为单独的不同类型(使用它们的clr名称)。它与IronPython做的事情不同,并将它们聚合到一个包含类型中。在
在本例中,
EventArgs
名称对应于非泛型EventArgs
类型。您需要直接从系统模块中获取合适的类型,如filmor所示。在相关问题 更多 >
编程相关推荐