如何解决在 python 中调用超类失败
class Pet:
def __init__(self,name,age):
self.name=name
self.age=age
return None
def show(self):
print("Hi my self {} and am of {} old".format(self.name,self.age))
return True
def speak(self):
print("I do speak but am a parent")
return True
class Cat(Pet):
def __initi__(self,age,breed):
super.__init__(name,age)
self.breed=breed
return None
def show(self):
print("This is called from Child class Cat")
return True
def speak(self):
print("This is Meaow")
return True
def reveal(self):
print("this is {} and of {} and breed is {}".format(self.name,self.age,self.breed))
return True
class Dog(Pet):
def __init__(self,age)
self.breed=breed
return None
def show(self):
print("This is called form Child class Dog")
return True
def speak(self):
print("This is bow bow")
return True
b=Cat("tim",2,"lago")
解决方法
需要调用super()
作为方法,即:添加两个括号。
如果你保持原样,你会得到:
TypeError: descriptor '__init__' requires a 'super' object but received a 'str'
除此之外,您还有一个错别字,实际上您写的是 __initi__
。
下面的这个对你有用:
class Pet:
def __init__(self,name,age):
self.name=name
self.age=age
return None
def show(self):
print("Hi my self {} and am of {} old".format(self.name,self.age))
return True
def speak(self):
print("I do speak but am a parent")
return True
class Cat(Pet):
def __init__(self,age,breed):
super(Cat,self).__init__(name,age)
self.breed=breed
return None
def show(self):
print("This is called from Child class Cat")
return True
def speak(self):
print("This is Meaow")
return True
def reveal(self):
print("this is {} and of {} and breed is {}".format(self.name,self.age,self.breed))
return True
class Dog(Pet):
def __init__(self,breed):
super(Dog,age)
self.breed=breed
return None
def show(self):
print("This is called form Child class Dog")
return True
def speak(self):
print("This is bow bow")
return True
b = Cat("tim",2,"lago")
,
错误 #1
您在 Cat 类中有 __initi__
,它应该是 __init__
。
错误 #2
调用 super
时必须使用括号 super()
。
不明白为什么在每个类的 __init__
方法中都使用 return None ?
class Pet:
def __init__(self,age):
self.name = name
self.age = age
return None
def show(self):
print("Hi my self {} and am of {} old".format(self.name,self.age))
return True
def speak(self):
print("I do speak but am a parent")
return True
class Cat(Pet):
def __init__(self,breed):
super().__init__(name,age)
self.breed = breed
return None
def show(self):
print("This is called from Child class Cat")
return True
def speak(self):
print("This is Meaow")
return True
def reveal(self):
print("this is {} and of {} and breed is {}".format(self.name,self.breed))
return True
class Dog(Pet):
def __init__(self,age)
self.breed = breed
return None
def show(self):
print("This is called form Child class Dog")
return True
def speak(self):
print("This is bow bow")
return True
b = Cat("tim","lago")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。