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

Python中如何将变量与类结合使用?新手代码运行异常求助

问题根源
  • 你调用input()获取到的用户输入是纯字符串类型,和你预先定义的woodsman变量没有关联,字符串类型本身不存在name/desc/type这些属性,因此运行时会抛出属性不存在的报错。
  • 额外注意:type是Python内置的关键字,不建议作为类的属性名使用,避免后续引发命名冲突。
修正方案

你可以用字典建立「用户输入字符串」和「Item实例」的映射关系,根据用户输入匹配到对应的实例后再访问属性即可。

修正后的可运行代码

class Item:
    def __init__(self, name, description, item_type, mindamage, maxdamage):
            self.name = name
            self.desc = description
            self.item_type = item_type
            self.mindmg = mindamage
            self.maxdmg = maxdamage

# 初始化物品实例
woodsman = Item("'Woodsman'", "An automatic chambered in .22lr", "gun", 4, 10)
# 建立输入文本和实例的映射字典
item_map = {
    "woodsman": woodsman
}

inspect_input = input("inspect:").lower()
# 先校验输入合法性再访问属性
if inspect_input in item_map:
    target_item = item_map[inspect_input]
    print(target_item.name)
    print(target_item.desc)
    print(target_item.item_type)
else:
    print("未找到对应物品")
逻辑说明
  • 把原来的type属性改名成item_type,避免和Python内置的type()函数冲突
  • 新增的item_map字典的key是用户可能输入的文本,value是对应的Item实例,输入匹配后就能拿到真实的实例对象访问属性
  • 新增输入合法性校验,避免用户输入不存在的物品名时直接抛出报错

内容的提问来源于stack exchange,提问作者JohnMcafeeDidn'tKillHimself

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:06:05