super引发错误“must be type not Jumper”python

2024-06-14 22:34:09 发布

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

我从我认为是一个新风格的课程开始:

class Object(object):
    def __init__(self,size):
        self.size=size

然后我创建了这个类的一个子类,看起来也是新样式:

^{pr2}$

最后,我创建了最后一个子类:

^{3}$

根据我对继承的基本理解,类跳转应该继承对象类型和外来类型的所有参数,但是在创建对象时:

myObj=Jumper(size=10,damage=10,bounceSize=50)

我遇到了一个错误:

Traceback (most recent call last):
  File "C:/Python27/test2", line 15, in <module>
    myObj=Jumper(size=10,damage=25,bounceSize=50)
  File "C:/Python27/test2", line 13, in __init__
    super(self,Jumper).__init__(*arg,**kwargs)
TypeError: must be type, not Jumper

当用“type()”函数检查每个类时,我发现它们都是“type”类型;我认为这表明它们属于新的类类型;这似乎是其他人的问题。在

是什么导致了我的问题?在


Tags: inself类型sizeinittypeline子类
1条回答
网友
1楼 · 发布于 2024-06-14 22:34:09

你把self和班级的顺序弄错了:

class Object(object):
    def __init__(self,size):
        self.size=size


class Alien(Object):
    def __init__(self, damage, size, *arg, **kwargs):
        super(Alien, self).__init__(size)
        self.damage = damage

class Jumper(Alien):
    def __init__(self, bounceSize, damage, *arg, **kwargs):
        super(Jumper, self).__init__(damage, *arg, **kwargs)
        self.bounceSize = bounceSize

相关问题 更多 >