You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python.NET中对.NET对象进行显式类型转换?

在Python.NET中实现IEngineeringObject到DeviceItem的类型转换

要在Python原生环境下完成IEngineeringObject到DeviceItem的类型转换,无需额外编写C#辅助函数,直接使用Python.NET提供的clr.Convert()方法即可——这是对应C#显式类型转换的原生实现:

import clr
# 导入DLL中的相关类型
from _hw import IEngineeringObject, DeviceItem

# 假设parent是你获取到的IEngineeringObject实例
dev_item = clr.Convert(parent, DeviceItem)

为什么手动修改__class__会报错

你尝试修改parent.__class__的方式行不通,核心原因是.NET接口(IEngineeringObject)和具体实现类(DeviceItem)的内存布局完全不同。Python.NET的对象本质是对CLR实例的包装,直接修改__class__会破坏底层的CLR对象结构,因此触发TypeError。

可选的安全校验逻辑

如果需要避免转换失败的异常,可以先判断实例是否实际是DeviceItem类型:

if isinstance(parent, DeviceItem):
    dev_item = clr.Convert(parent, DeviceItem)
else:
    # 处理转换失败的逻辑
    print("当前实例无法转换为DeviceItem类型")

内容的提问来源于stack exchange,提问作者leornian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 14:12:05