ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

在Python 2.7中使用变量引用类属性

2019-11-20 16:55:17  阅读:261  来源: 互联网

标签:variables python class


我正在开发基于文本的游戏,但是我还没有找到针对我的战斗系统的非常有效的解决方案.目前,我的语句设置如下:

class Weapon1:
    damage = 4
    price = 5

class Weapon2:
    damage = 4
    price = 5

class Enemy1:
    damage = 2
    health = 5

class enemy2:
    damage = 3
    health = 6

def fight():
    Weapon = raw_input("What weapon would you like to use?")
    if Weapon == "Weapon 1":
        if enemy = "Enemy1":
            Enemy1.health -= Weapon1.damage
        else:
            Enemy2.health -= Weapon1.damage
    else:
        if enemy = "Enemy1":
            pass
        else:
            pass

我的敌人和类比这多得多,所以我想有一条语句可以使用变量引用类的属性.由于长度超过100行,我决定不上传实际功能.
我所追求的伪代码如下所示:

class pistol:
    damage = 4
    price = 5

class cannon:
    damage = 4
    price = 5

class Enemy1:
    damage = 2
    health = 5

class enemy2:
    damage = 3
    health = 6

def fight():
    Weapon = raw_input("What weapon would you like to use?")
    enemy.health -= weapon.damage

解决方法:

您可以使用一个简单的字典,在此处使用namedtuple使代码更易于阅读:

from collections import namedtuple

Weapon = namedtuple('Weapon', ['damage', 'price'])

weapons = {
    'pistol': Weapon(4, 5),
    'cannon': Weapon(4, 5),
    # ...
}

def fight():
    weapon_name = raw_input("What weapon would you like to use?")
    enemy.health -= weapons[weapon_name].damage

标签:variables,python,class
来源: https://codeday.me/bug/20191120/2045625.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有