gpt4 book ai didi

python - 关于继承和 super()

转载 作者:行者123 更新时间:2023-11-28 22:29:45 28 4
gpt4 key购买 nike

给定代码:

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

现在属性设置正确,包括healthdamage:

>>> 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com