Enterprise Architect中Python调用GetBaselines接口报类型不匹配错误排查
问题原因与解决方案
1 代码笔误修正
你当前代码存在一处明显的变量赋值遗漏:
# 原错误写法,返回的Package对象未赋值 rep.GetPackageByGuid(pkgguid) # 修正为 pkg = rep.GetPackageByGuid(pkgguid)
你注释提到print("pgkname: ", pkg.Name)可正常运行,大概率是你在其他位置提前定义了pkg变量,建议统一修正避免后续变量混乱。
2 核心报错修复
你遇到的Type mismatch类型不匹配错误,是Python的win32com库调用COM接口时对可选参数的推断缺陷导致的:
EA的Project.GetBaselines方法官方定义包含2个参数,第二个IncludeHistory参数虽然标注为可选,但win32com无法自动补全缺省参数的类型信息,必须主动传入布尔值才能通过类型校验。
修正后完整代码
def get_baselines(pkgguid): """ Get list of baselines for package """ rep = win32com.client.Dispatch("EA.App").Repository # 修正变量赋值 pkg = rep.GetPackageByGuid(pkgguid) print("pgkname: ", pkg.Name) project = rep.GetProjectInterface() print ("guid xml: ", project.GUIDtoXML(pkgguid), "GUID: ", pkgguid) # 主动传入第二个可选参数False pkgxml = project.GetBaselines(project.GUIDtoXML(pkgguid), False) print (pkgxml)
修正后即可正常获取到基线的XML格式返回结果,你可以根据需求解析XML提取基线的版本、创建时间、备注等字段。
内容的提问来源于stack exchange,提问作者user2144067
相关产品推荐
相关产品推荐

