super 引发错误 "must be type not Jumper" python
super raises error "must be type not Jumper" python
我从我认为的新风格入手class:
class Object(object):
def __init__(self,size):
self.size=size
然后我创建一个子class,看起来也是新样式:
class Alien(Object):
def __init__(self,damage,*arg,**kwargs):
self.damage=damage
super(self,Alien).__init__(*arg,**kwargs)
self.damage=damage
最后我创建了一个最终子class:
class Jumper(Alien):
def __init__(self,bounceSize,*arg,**kwargs):
self.bounceSize=bounceSize
super(self,Jumper).__init__(*arg,**kwargs)
根据我对继承的基本理解,class跳线应该继承Object类型和Alien类型的所有参数,但是在创建对象时却改为:
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()" 函数检查每个 class 时,我发现它们都是 "type" 类型;我认为这表明它们是新的 class 类型;这似乎是其他人的问题。
那么是什么导致了我的问题?
您的 self 和 class 的顺序错误:
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
我从我认为的新风格入手class:
class Object(object):
def __init__(self,size):
self.size=size
然后我创建一个子class,看起来也是新样式:
class Alien(Object):
def __init__(self,damage,*arg,**kwargs):
self.damage=damage
super(self,Alien).__init__(*arg,**kwargs)
self.damage=damage
最后我创建了一个最终子class:
class Jumper(Alien):
def __init__(self,bounceSize,*arg,**kwargs):
self.bounceSize=bounceSize
super(self,Jumper).__init__(*arg,**kwargs)
根据我对继承的基本理解,class跳线应该继承Object类型和Alien类型的所有参数,但是在创建对象时却改为:
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()" 函数检查每个 class 时,我发现它们都是 "type" 类型;我认为这表明它们是新的 class 类型;这似乎是其他人的问题。
那么是什么导致了我的问题?
您的 self 和 class 的顺序错误:
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