我正在尝试学习更多关于Python类的知识,并且正在编写一个程序来帮助解决这个问题。我已将父类和子类定义如下:
class Character():
'Common base class for all characters'
def __init__(self):
self.attack = 1
self.defence = 1
self.strength = 1
def setAttack(self, attack):
self.attack = attack
def setDefence(self, defence):
self.defence = defence
def setStrength(self, strength):
self.strength = strength
class Enemy(Character):
'Enemy Class'
def __init__(self):
self.setAttack(random.randint(5,20))
self.setDefence(random.randint(5,20))
self.setStrength(random.randint(5,20))
这意味着我可以用线定义一个敌人
enemy1 = Enemy()
我的观点是,然后我可以复制具有不同随机值的 Enemy 类来创建不同类型的敌人。 即创建一个与上面相同但具有不同随机值的 BiggerEnemy 类。
虽然上面的代码有效,但我读过的所有教科书和文档都表明我应该这样构建我的代码:
class Character():
'Common base class for all characters'
def __init__(self, attack, defence, strength):
self.attack = attack
self.defence = defence
self.strength = strength
def setAttack(self, attack):
self.attack = attack
def setDefence(self, defence):
self.defence = defence
def setStrength(self, strength):
self.strength = strength
class Enemy(Character):
'Enemy Class'
def __init__(self, attack,defence,strength):
Character.__init__(self, attack, defence, strength)
self.attack = attack
self.defence = defence
self.strength = strength
self.setAttack(random.randint(5,20))
self.setDefence(random.randint(5,20))
self.setStrength(random.randint(5,20))
这很好,但这意味着我必须通过设置攻击、防御和力量来声明进入儿童类的内容,以便创建敌人
enemy1 = Enemy(10,10,10)
我想知道我的方法是否正确,以及我是否缺少有关类如何工作的内容。我读过的所有文档似乎都指出了我的代码是错误的,但替代方案似乎否定了对子类的需求。 因此,我第一次在stackoverflow上发布。
super-init方法是一个很好的做法,所以我建议:
class Character():
'Common base class for all characters'
def __init__(self, attack, defence, strength):
self.attack = attack
self.defence = defence
self.strength = strength
class Enemy(Character):
'Enemy Class'
def __init__(self):
Character.__init__(self, attack=random.randint(5,20),
defence=random.randint(5,20), strength=random.randint(5,20))
二传手是不必要的。