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

使用for循环为变量赋值时,packet.field无法获取正确值的问题

动态获取类属性并赋值全局变量的解决方案

问题出在packet.field的写法上:Python会将field作为固定的属性名去查找,而不是解析循环变量field对应的字符串值,自然拿不到目标属性的内容。

正确的做法是使用Python内置的getattr()函数,它支持通过字符串动态获取对象或类的属性值,修改后的代码如下:

lst = ['sectID','MP_Sector_ID']
for field in lst:
    globals()[field] = getattr(packet, field)

补充说明:

  • 如果packet是类本身,上述代码获取的是类属性;如果是类的实例,也能正常获取实例属性,getattr()对两种场景都兼容。
  • 尽量谨慎使用globals()修改全局变量,大规模操作容易导致代码可读性降低,若场景允许,建议用字典统一存储这些值而非分散的全局变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:06:25