1

例如,如果有一个“生物”类:

class Creature:
    def __init__(self,name,hp,damage):
        self.name = name
        self.hp = hp
        self.damage = damage

现在,如果我想创建一个兽人,我会做orc = Creature(0,0,'orc',20,4). 然而,对于多种类型的生物(巨魔、食人魔等),这是不切实际的:我必须记住每种生物的统计数据,并且每次我想创建一个生物时,我都必须输入所有这些不同的统计数据。

有没有办法以更简单的方式做到这一点?例如,我会这样做orc = Creature(orc),它会自动分配它的名称、hp 和损坏,我在不同的文件/代码的一部分中定义,例如在字典中。

这可能吗?

编辑:我知道继承和它附带的所有东西,但我在某处读到,将父类的属性设置为设定值的子类是“不好的”,尽管我不记得确切的原因.

4

2 回答 2

1

您始终可以使用原型:

proto = {
  "orc" : (200, 300, 0)
  "troll" : (500, 300, 0)
  "wolf" : (100, 100, 0)
  ...
}

class Creature:
    def __init__(self, name):
        self.name = name
        self.hp = proto[name][0]
        ...

以上当然是不完整或不安全的。但关键是,如果您需要创建许多相同“类型”的对象,只需将默认值保留在其他地方即可。

于 2013-06-02T12:14:50.487 回答
1

你肯定想使用继承

在用面向对象语言编写游戏之前,你真的应该阅读一些关于 OOP 的教程。

于 2013-06-02T12:04:30.667 回答