【发布时间】:2016-08-09 23:49:14
【问题描述】:
例如,我正在尝试为一个简单的游戏构建一个敌人类。生成的每个 enemy 都有一个 type 影响它的统计信息,这些统计信息是 enemy 类中的字段。
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
每个 type 应该是 enemy 的 子类,像这样..
class goblin(Enemy):
name = goblin;
current_health = 8
max_health = 8
attack = 3
defense = 2
armor = 0
def attack(){
//goblin-specific attack
}
但是这种方法意味着我必须为每个单独的 type 构建一个类(这将是 80 多个类),或者有更好的方法吗?这个 enemy 将是随机的,所以我认为 types 也可以放入使用 名称的 dictionary >types 作为关键字。虽然我不完全确定如何实现它。
【问题讨论】:
-
有了这么多潜在的子类,您可能无法很好地建模问题。一方面,听起来您将“is-a”与“has-a”关系混淆了——可能还有类和类的实例。列出的大多数属性可能是在类或子类的构造函数中初始化的 (
__init__())。此外,类方法的所有定义都会自动接收通常称为self的第一个参数,它是类的实例。所以你需要有def attack(self):。此外,Python 不会以这种方式使用{和}括号。
标签: python dictionary inheritance pygame python-object