例如,我正在尝试为一个简单的游戏构建一个敌人类。每一个产生的敌人都有一个类型影响它的属性,这些属性是敌人类中的字段。你知道吗
class Enemy:
#Base Stats for all enemies
name = "foo"
current_health = 4
max_health = 4
attack = 0
defense = 0
armor = 0
initiative = 0
initMod = 0
alive = True
每个类型是否应该是敌人的子类。。你知道吗
class goblin(Enemy):
name = goblin;
current_health = 8
max_health = 8
attack = 3
defense = 2
armor = 0
def attack(){
//goblin-specific attack
}
但是这个方法意味着我必须为每个类型构建一个类(80+个类),或者有更好的方法吗?这个敌人将会随机化,所以我想类型也可以放入一个字典,它使用类型的名称作为关键字。尽管我不完全确定如何实现这一点。你知道吗
如果每个敌人类型的属性集和可能的操作在不同类型中都很常见,那么我认为没有理由比为该类型定义一个80项枚举并使用一个名为
Enemy
的类更复杂。你知道吗如果您确实需要各种各样的操作,那么您可以将80个类型分组到具有公共属性的各种集合中(例如
FlyingEnemy
、UndeadEnemy
,等等)。这些将成为你的子类。你知道吗如果您想走字典路线,您可以这样做,通过键返回一个元组:
尽管您可能希望使用命名的\u元组
https://stackoverflow.com/a/13700868/2489837
以确保不会混淆元组中的字段
地精应该是敌人的一个例子。但是,在您的示例中添加了一个名为
attack
的方法。我想说最好的方法是:现在可以创建名为goblin的
Enemy
实例。你知道吗为了回答您最初提出的何时使用子类的问题,我想说使用子类是很好的,但是在您的情况下可能会使事情过于复杂。由于您的子类中只有一个方法,您可以轻松地创建一个模块,然后在
__init__
中有一个参数来指定attack
函数。这将更简化您的代码。你知道吗相关问题 更多 >
编程相关推荐