apihelper 查看属性和方法

本文介绍了一个Python脚本,该脚本定义了一个名为definfo的函数,用于打印指定对象的方法及其文档字符串。通过调整参数可以改变输出格式,如方法名称的对齐方式及文档字符串的展示形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

def info(object,spacing=20,collapse=1):
  """print methods and doc string.

  takes module,class,list,dictionary,or string."""
  methodList=[method for method in dir(object) if hasattr(getattr(object,method),'__call__')]
  processFunc=collapse and (lambda s:" ".join(s.split())) or(lambda s:s)
  print("/n".join(["%s %s"%(method.ljust(spacing),processFunc(str(getattr(object,method).__doc__)))for method in methodList]))
if __name__=="__main__":
  print(info.__doc__)
  
Python3.1没有了callable 但是我们可以用hasattr(method,‘__call__')代替它

processFunc 如果你用type去查看 发现他是一个引用

而processFunc()这个函数呢 就相当与c++里面的 c?a:b

ExportTestCommand = new CommandBase(async l => { if (IQCListSelectItems == null || !IQCListSelectItems.Any()) { return; } try { List<string> iqcNoList = new List<string>{IQCListSelectItem.IqcNo }; var ret = await APIHelper.PostSendDtoAsync<List<IQCExportItemModel>>(ApiRoutes.IQCNoetailExportList, iqcNoList); if (ret == null || !ret.Any()) { return; } // 构建三级结构(使用 AutoMap 映射) List<IQCExportItemModel> threeLevelStructureList = new(); ret.ForEach(fe => { // 映射主单据 var currentfe = MapperHelper.AutoMap<IQCExportItemModel, IQCExportItemModel>(fe); currentfe.IQCExportDetailDtos = new List<IQCExportDetailModel>(); if (fe.IQCExportDetailDtos != null && fe.IQCExportDetailDtos.Any()) { fe.IQCExportDetailDtos.ForEach(detail => { // 映射明细 var currentDetail = MapperHelper.AutoMap<IQCExportDetailModel, IQCExportDetailModel>(detail); currentDetail.IQCExportDetailResultDtoList = new List<IQCExportDetailResultModel>(); if (detail.IQCExportDetailResultDtoList != null && detail.IQCExportDetailResultDtoList.Any()) { // 映射检测细项并转换为导出模型 detail.IQCExportDetailResultDtoList.ForEach(testItem => { // 从检测细项模型映射到导出模型 var exportTestItem = MapperHelper.AutoMap<IQCExportDetailResultModel, IQCExportModel>(testItem); // 补充主单据属性 exportTestItem.IqcNo = fe.IqcNo; exportTestItem.VendorCode = fe.VendorCode; exportTestItem.VendorName = fe.VendorName; exportTestItem.RtNo = fe.RtNo; // 补充明细属性 exportTestItem.ItemId = detail.ItemId; exportTestItem.IqcSolutionName = detail.IqcSolutionName; exportTestItem.LotQty = detail.LotQty; exportTestItem.SamplingQty = detail.SamplingQty; exportTestItem.TestQty = detail.TestQty; exportTestItem.DefectRate = detail.DefectRate; exportTestItem.Remark = detail.Remark; exportTestItem.DefectReason = detail.DefectReason; exportTestItem.HandlingMethod = detail.HandlingMethod; currentDetail.IQCExportDetailResultDtoList.Add(testItem); }); } else { // 无检测细项时添加空项 var emptyTestItem = new IQCExportDetailResultModel { IqcNo = fe.IqcNo, ItemId = detail.ItemId, PartNo = detail.PartNo, TestItemName = Langs.LangGetValue("NoTestItems") }; currentDetail.IQCExportDetailResultDtoList.Add(emptyTestItem); } currentfe.IQCExportDetailDtos.Add(currentDetail); }); } else { // 无明细时添加空明细 var emptyDetail = new IQCExportDetailModel { IqcNo = fe.IqcNo, PartNo = Langs.LangGetValue("NoDetails"), IQCExportDetailResultDtoList = new List<IQCExportDetailResultModel>() }; currentfe.IQCExportDetailDtos.Add(emptyDetail); } threeLevelStructureList.Add(currentfe); }); List<IQCExportModel> exportFlatList = new(); threeLevelStructureList.ForEach(main => { main.IQCExportDetailDtos.ForEach(detail => { if (detail.IQCExportDetailResultDtoList.Any()) { // 从检测细项映射到导出模型并补充属性 var items = MapperHelper.AutoMap<IQCExportDetailResultModel, IQCExportModel>(detail.IQCExportDetailResultDtoList); items.ForEach(item => { // 补充主单据明细中未被自动映射的属性 item.RtNo = main.RtNo; item.IqcSolutionName = detail.IqcSolutionName; item.LotQty = detail.LotQty; item.SamplingQty = detail.SamplingQty; }); exportFlatList.AddRange(items); } else { // 无检测细项时用明细属性构建导出项 var emptyExportItem = MapperHelper.AutoMap<IQCExportDetailModel, IQCExportModel>(detail); MapperHelper.AutoMap(main, emptyExportItem); // 补充主单据属性 exportFlatList.Add(emptyExportItem); } }); }); // 执行导出 if (exportFlatList.Any()) { DataTable dtData = ImportHelper.ObjectToTable(exportFlatList, Langs); long timestamp = DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).Ticks / 10000; string fileName = $"IQCExport_{timestamp}.xlsx"; SaveFileDialog saveFileDialog = new() { Filter = "Excel Files|*.xlsx", Title = Langs.LangGetValue("SelectExportPath"), FileName = fileName, DefaultExt = "xlsx", OverwritePrompt = true, RestoreDirectory = true, InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) }; if (saveFileDialog.ShowDialog() == DialogResult.OK) { ImportHelper.ExportDataTable(dtData, saveFileDialog.FileName); new Process { StartInfo = new ProcessStartInfo(saveFileDialog.FileName) { UseShellExecute = true } }.Start(); MESGrowl.MESSuccess(Langs.LangGetValue("ExportSuccess")); } } else { MESGrowl.MESInfo(Langs.LangGetValue("NoValidDataToExport")); } } catch (Exception ex) { return; } });这个代码是什么意思,结构是什么
最新发布
08-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值