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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值