微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将用户输入字符串转换为引用预先存在的类对象的方法?

如何解决将用户输入字符串转换为引用预先存在的类对象的方法?

如果标题有点不正确,请原谅我,我对 Python 的类非常陌生,并且不完全知道它的各种复杂的名称是什么。最好的猜测!

你好!我正在处理一个小示例项目,但遇到了障碍。目前我正在尝试为桌面游戏创建一个基本的战斗跟踪器。我目前的目标是创建一个系统,根据用户输入,只需输入特定实体的名称和相应的数字,就可以提高或降低属于“实体”类的预设对象的 HP。

例如,如果 orkBoy's Wounds(又名 HP)认设置为 12,而您想将其增加到 15,您可以输入:

orkBoy 3

或者,如果您希望将其减少 2:

orkBoy -2

虽然如果您直接在代码中引用对象,系统可以完美运行,但由于 str 属性错误,我无法通过用户的输入字符串引用对象 (AttributeError: 'str' object has no attribute '伤口变化')。我将在下面放置代码包括尝试/除外尝试并在我想要完成的事情上失败,以及提供不令人满意但成功的“解决方案”的异常。

class Entity:

    woundChange = 0

    def __init__(self,name,wounds,movement,weapon,melee):
        self.name = name
        self.wounds = wounds
        self.movement = movement
        self.weapon = weapon
        self.melee = melee

    def array(self):
        return '{}; HP: {},{},{}'.format(self.name,self.wounds,self.movement,self.weapon,self.melee)

    def apply_damage(self):
        self.wounds = int(self.wounds + self.woundChange)



imperialGuard = Entity('Imperial Guardsman',10,'3/6/9/18','Lasgun','Knife')
orkBoy = Entity('Ork Boy',12,'Slugga','Choppa')


entity_damage = input('Input entity & wound change.\n')
entity_damage = entity_damage.split(' ')
print(entity_damage)
print('')

entityName = entity_damage[0]
entityNum = int(entity_damage[1])

try:
    entityName.woundChange = int(entityNum)
    entityName.apply_damage()
except AttributeError:
    print('No dice.')
    orkBoy.woundChange = int(entityNum)
    print(orkBoy.wounds)
    orkBoy.apply_damage()
    print(orkBoy.wounds)

感谢您的阅读,祝您周二快乐!

解决方法

使用 dict

entities = {
    'imperialGuard': Entity('Imperial Guardsman',10,'3/6/9/18','Lasgun','Knife')
    'orkBoy': Entity('Ork Boy',12,'Slugga','Choppa')
}

然后您可以使用用户输入来查找适当的对象。例如,

entities[entityName].apply_damage()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?