我从我认为的新风格类开始:
class Object(object):
def __init__(self,size):
self.size=size
然后我创建了一个子类,看起来也是新的样式:
class Alien(Object):
def __init__(self,damage,*arg,**kwargs):
self.damage=damage
super(self,Alien).__init__(*arg,**kwargs)
self.damage=damage
最后,我创建了一个最后的子类:
class Jumper(Alien):
def __init__(self,bounceSize,*arg,**kwargs):
self.bounceSize=bounceSize
super(self,Jumper).__init__(*arg,**kwargs)
从我对继承的基本理解来看,类Jumper应该继承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
使用&#34; type()&#34;检查每个班级时功能我发现它们都是#34;类型&#34 ;;我认为它们表明它们属于新的类型;这似乎是其他人的问题。
那是什么导致我的问题?
答案 0 :(得分:1)
你的自我和班级的顺序错误:
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