设置多个类属性的简便方法?

时间:2013-06-02 12:01:52

标签: python class attributes

例如,如果有'生物'类:

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和损坏(我在代码的不同文件/部分中定义)分配到字典中。

这可能吗?

编辑:我知道继承及其附带的所有内容,但我在某处读到,将父类的属性设置为设定值的子类是“不好”,尽管我记不清了确切的原因。

2 个答案:

答案 0 :(得分:1)

您肯定想使用inheritance

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

答案 1 :(得分: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]
        ...

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