给定代码:
class Character():
def __init__(self, name):
self.name = name
self.health = 50
self.damage = 10
class Warrior(Character):
def __init__(self, name, weapon, armor):
super(Character).__init__()
self.weapon = weapon
self.armor = armor
self.strength = 10
self.dexterity = 5
self.intelligence = 5
Doug = Character("Doug")
Mark = Warrior("Mark", "Axe", None)
为什么Warrior
类不从Character
类继承health
?
我需要做什么不同的事情才能打印 Mark.health
?
最佳答案
您错误地使用了super()
;不要单独传入Character
。在 Python 3 中,根本不传递任何内容,但将 name
传递给 __init__
:
class Warrior(Character):
def __init__(self, name, weapon, armor):
super().__init__(name)
self.weapon = weapon
self.armor = armor
self.strength = 10
self.dexterity = 5
self.intelligence = 5
现在属性已正确设置,包括生命值
和伤害
:
>>> Mark = Warrior("Mark", "Axe", None)
>>> vars(Mark)
{'name': 'Mark', 'health': 50, 'damage': 10, 'weapon': 'Axe', 'armor': None, 'strength': 10, 'dexterity': 5, 'intelligence': 5}
在幕后,super(Character).__init__()
最终调用 super.__init__()
方法,该方法在类的方法中恰好可以工作但没有产生任何实际用途(None
被返回)。
关于python - 关于继承和 super(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42886139/