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
相关产品推荐
相关产品推荐

