关于python中_uinit_uu错误的一些问题

2024-09-30 04:34:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到错误:TypeError:init()缺少1个必需的位置参数:“攻击”

    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, name, attack, 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, name, attack, 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)

我想我已经在这里写过了。这个代码有什么问题


Tags: nameselfformatinitdefunitclasspower
1条回答
网友
1楼 · 发布于 2024-09-30 04:34:33

您试图将Power类继承到除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, name, attack, 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, name, attack, 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)

相关问题 更多 >

    热门问题