如何解决有关python中的__init_错误的一些问题
我收到错误:TypeError: init ()缺少1个必需的位置参数:'attack'
let updatedkey = randomkey.slice(0,20) + "_" + randomkey.slice(20);
该错误来自我写的 class Unit:
def __init__(self,name):
self.name = name
class Power(Unit):
def __init__(self,name,attack):
Unit.__init__(self,name)
self.attack = attack
supatt = attack * 2
print("{0} has a power of {1} and it can develop {1}
of its superpowers".format(self.name,attack,supatt))
class Ground(Power):
def __init__(self,velocity,friction):
Power.__init__(self,attack)
self.velocity = velocity
self.friction = friction
totalv = velocity - fiction
print("{0} : Groud Attack. \nTotal Speed : {1}.\n
Power : {2}.".format(self.name,totalv,attack))
class Sky(Power):
def __init__(self,skyspeed,airres):
Power.__init__(self,attack)
self.skyspeed = skyspeed
self.airres = airres
totalss = skyspeed - airres
print("{0} : Sky Attack. \nTotal Speed : {1}.\n Power
: {2}.".format(self.name,totalss,attack))
valkyrie = Sky("Valkyrie",200,300,150)
print(valkyrie)
类中:
Sky(Power)
我以为我已经在这里写过Power.__init__(self,attack)
。此代码有什么问题?
解决方法
您试图将Power Class继承到除Unit类之外的所有其他类。
您要使用super()函数继承类。
class Unit:
def __init__(self,name):
self.name = name
class Power(Unit):
def __init__(self,name,attack):
Unit.__init__(self,name)
self.attack = attack
supatt = attack * 2
print("{0} has a power of {1} and it can develop {1} of its
superpowers".format(self.name,attack,supatt))
class Sky(Power):
def __init__(self,skyspeed,airres):
super().__init__(self,attack)
self.skyspeed = skyspeed
self.airres = airres
totalss = skyspeed - airres
print("{0} : Sky Attack. \nTotal Speed : {1}.\n Power:
{2}.".format(self.name,totalss,attack))
class Ground(Power):
def __init__(self,velocity,friction):
super().__init__(self,attack)
self.velocity = velocity
self.friction = friction
totalv = velocity - friction
print("{0} : Groud Attack. \nTotal Speed : {1}.\nPower :
{2}.".format(self.name,totalv,attack))
valkyrie = Sky("Valkyrie",200,300,150)
print(valkyrie)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。