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

Python遍历类对象查找特定desc属性的Skill对象并获取属性值

定位指定Skill实例并获取属性值的实现方案

首先,你需要把所有Skill实例统一存到一个列表里,这样方便遍历筛选。接下来按需求设置过滤条件,就能精准找到目标技能并提取属性。

完整实现代码

class Skill:
    def __init__(self, user, desc, effect, ea, amount, am):
        self.user = user
        self.desc = desc
        self.effect = effect
        self.amount = amount
        self.am = am

s1 = Skill("user1", "lightning blade", "Decrease", "health", 165419, 34743)
s2 = Skill("user1", "hurricane dash", "Decrease", "Speed", 113479, 95791)
s3 = Skill("user2", "earthquake", "Increase", "attack", 163479, 35791)

# 把所有技能实例存入列表,方便统一遍历
all_skills = [s1, s2, s3]

target_skill = None
# 遍历筛选符合要求的技能
for skill in all_skills:
    # 匹配目标技能描述,同时限定所属用户(自动排除其他用户技能和同用户的hurricane dash)
    if skill.desc == "lightning blade" and skill.user == "user1":
        target_skill = skill
        break

# 提取目标属性
if target_skill:
    print(f"目标技能属性:amount={target_skill.amount}, am={target_skill.am}")
else:
    print("未找到符合条件的技能")

逻辑说明

  • 用列表all_skills管理所有技能实例,避免零散变量难以遍历维护
  • 筛选条件同时满足两个核心要求:技能描述严格匹配"lightning blade"、属于指定用户(比如这里的user1),自动过滤掉其他用户的技能以及同用户的hurricane dash
  • 加入未找到的判断分支,避免后续访问属性时触发报错

如果用户是动态指定的,可以把用户参数抽成变量,提升代码复用性:

target_user = "user1"
target_desc = "lightning blade"

for skill in all_skills:
    if skill.user == target_user and skill.desc == target_desc:
        target_skill = skill
        break

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 10:35:18