例如,如果有'生物'类:
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和损坏(我在代码的不同文件/部分中定义)分配到字典中。
这可能吗?
编辑:我知道继承及其附带的所有内容,但我在某处读到,将父类的属性设置为设定值的子类是“不好”,尽管我记不清了确切的原因。答案 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]
...
上述当然不完整或安全。但重点是,如果你需要创建许多相同“类型”的对象,只需将默认值保留在其他地方。