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

如何通过循环插入迭代器简化charSelect下w、t系列属性的重复try-except代码

你要实现动态获取带数字后缀的属性,可以使用Python内置的getattr()函数,通过拼接属性名字符串的方式访问对应属性,参考实现如下:

for i in range(1, 4):
    try:
        # 动态获取w1/w2/w3属性
        getattr(charSelect, f"w{i}").Status()
    except AttributeError:
        # 捕获属性不存在的异常后,动态获取t1/t2/t3属性
        getattr(charSelect, f"t{i}").Status()

说明

  • 相比你写的while循环,直接用for遍历range(1,4)(range为左闭右开规则,结束值写4可以拿到1、2、3三个值)写法更简洁,不需要手动维护计数器
  • 不要使用裸except,明确捕获AttributeError可以避免吞掉Status()方法执行过程中抛出的其他异常,排查问题更方便
  • 如果希望逻辑更清晰,可以拆分属性获取和方法调用的步骤:
for i in range(1, 4):
    try:
        current_char = getattr(charSelect, f"w{i}")
    except AttributeError:
        current_char = getattr(charSelect, f"t{i}")
    current_char.Status()

原写法报错的原因

你尝试用charSelect.w[i]访问的是charSelect下w属性(列表/数组类型)的第i个元素,而你实际的属性是独立的w1/w2/w3,不存在名为w的列表属性,所以无法通过下标访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:24:09