老师,问一下super调用父类的用法
来源:2-1 类的继承
20夜风来袭
2020-03-13 00:14:02
"""
猫科动物的细化
Tiger 类 Panda 类 Petcat 类
DuanCat 类 HuaCat类
"""
class BaseCat(object):
"""
猫科动物的基础类
"""
tag = '猫科动物'
def __init__(self,name):
self.name = name
def eat(self):
"""猫吃东西"""
print('猫都要吃东西')
class Tiger(BaseCat):
"""
老虎类 也是猫科动物
"""
def eat(self):
super(Tiger,self).eat() #调用父类方法
print("我还喜欢吃肉,大猪肉")
class Panda(BaseCat):
"""
熊猫类 也是猫科动物
"""
pass
class PetCat(BaseCat):
"""
家猫类
"""
def eat(self):
super(PetCat, self).eat() # 调用父类方法
print("我还喜欢吃猫粮食")
class HuaCat(PetCat):
"""
中华田园猫
"""
def eat(self):
super(HuaCat, self).eat() # 调用父类方法
print("我还喜欢吃零食")
class DuanCat(PetCat):
"""
英国短毛
"""
def eat(self):
print("我啥都吃")
if __name__ == '__main__':
cat = HuaCat('小黄') #实例化中华田园猫
# print(cat)
cat.eat()
print("---------------------------------")
DuanCat('小辉').eat()
#子类的判断
print(issubclass(DuanCat, BaseCat))
print(issubclass(DuanCat, PetCat))
print(issubclass(DuanCat, Tiger))
"""
老师 我想问一下这串代码,其中在下面super后面把HuaCat改成PetCat也能执行,但是执行结果不一样了,然后把HuaCat改成BaseCat不能执行,是因为调用父类而不能写成父类吗??
class HuaCat(PetCat):
"""
中华田园猫
"""
def eat(self):
super(BaseCat, self).eat() # 调用父类方法,
print("我还喜欢吃零食")
"""
1回答
同学,你好。因为BaseCat类的父类是object类,这个类中没有定义eat()方法,所以报错,分析如下:
super(BaseCat, self).eat()方法调用的是BaseCat的父类object,object类中没有定义eat()方法,程序运行报错;
super(HuaCat, self).eat()方法调用的是HuaCat的父类PetCat,PetCat类中定义了eat()方法,程序运行成功;
super(PetCat, self).eat()方法调用的是PetCat的父类BaseCat,BaseCat类中定义了eat()方法,程序运行成功;
如果解决了你的疑惑,请采纳,祝学习愉快~
相似问题