gpt4 book ai didi

python - 当我尝试向一个类添加参数时,我收到从另一个类继承的类的类型错误

转载 作者:行者123 更新时间:2023-12-01 05:06:17 24 4
gpt4 key购买 nike

我已经得到了这段代码,其中没有错误:

class Weapon(object): #don't know if this has to inherit from (object)
def __init__(self,weaponName):
self.weaponName=weaponName

class Character(object):
def __init__(self,name,weaponName):
self.name=name
self.weapon=Weapon(weaponName)

class NPC(Character):
def __init__(self,name,weaponName):
super().__init__(name,weaponName)

class Friendly(NPC):
def __init__(self,name,weaponName):
super().__init__(name,weaponName)


sword=Weapon('sword')
guard=NPC('Bob','sword')

print(guard.weapon.weaponName)
print(guard.name)

但是当我尝试向 Weapon 类添加伤害属性时:

class Weapon(object):
def __init__(self,weaponName,weaponDamage):
self.weaponName=weaponName
self.weaponDamage=weaponDamage

class Character(object):
def __init__(self,name,weaponName):
self.name=name
self.weapon=Weapon(weaponName)

class NPC(Character):
def __init__(self,name,weaponName):
super().__init__(name,weaponName)

class Friendly(NPC):
def __init__(self,name,weaponName):
super().__init__(name,weaponName)


sword=Weapon('sword',15)
guard=NPC('Bob','sword')

print(guard.weapon.weaponName)
print(guard.name)

我得到:

Traceback (most recent call last):
File "D:\Python files\inheritance test.py", line 21, in <module>
guard=NPC('Bob','sword')
File "D:\Python files\inheritance test.py", line 13, in __init__
super().__init__(name,weaponName)
File "D:\Python files\inheritance test.py", line 9, in __init__
self.weapon=Weapon(weaponName)
TypeError: __init__() missing 1 required positional argument: 'weaponDamage'

这是为什么呢?我不想在角色初始化的任何地方实际引用 Wea​​ponDamage,我只是想能够在攻击等后续功能中使用它。如果我有多种武器,我希望能够说“Friendly 的这个实例有 x 武器”,然后通过查看 Weapon 类的 x 实例,它可以知道该武器的伤害是多少。

最佳答案

你问:

Why is that?

您在 Weapon.__init__() 中指定它需要 weaponDamage 作为参数。如果您在任何地方构造 Weapon 实例,则需要提供 weaponDamage 的值。

您可以通过在 Weapon.__init_() 中为 weaponDamage 提供默认值来纠正错误。

class Weapon(object):
def __init__(self,weaponName,weaponDamage=0):
self.weaponName=weaponName
self.weaponDamage=weaponDamage

关于python - 当我尝试向一个类添加参数时,我收到从另一个类继承的类的类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24944692/

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