发布网友 发布时间:2022-04-26 21:30
共2个回答
懂视网 时间:2022-04-29 16:42
一、单独调用父类的方法
需求:编写一个类,然后再写一个子类进行继承,使用子类去调用父类的方法1。
使用方法1打印: 胖子老板,来包槟榔。
那么先写一个胖子老板的父类,执行一下:
class FatFather(object): def __init__(self, name): print('FatFather的init开始被调用') self.name = name print('FatFather的name是%s' % self.name) print('FatFather的init调用结束') def main(): ff = FatFather("胖子老板的父亲")
运行一下这个胖子老板父类的构造方法init 如下:
if __name__ == "__main__": main() FatFather的init开始被调用 FatFather的name是胖子老板的父亲 FatFather的init调用结束
好了,那么下面来写一个子类,也就是胖子老板类,继承上面的类。
# 胖子老板的父类 class FatFather(object): def __init__(self, name): print('FatFather的init开始被调用') self.name = name print('调用FatFather类的name是%s' % self.name) print('FatFather的init调用结束') # 胖子老板类 继承 FatFather 类 class FatBoss(FatFather): def __init__(self, name, hobby): print('胖子老板的类被调用啦!') self.hobby = hobby FatFather.__init__(self, name) # 直接调用父类的构造方法 print("%s 的爱好是 %s" % (name, self.hobby)) def main(): #ff = FatFather("胖子老板的父亲") fatboss = FatBoss("胖子老板", "打斗地主")
在这上面的代码中,我使用FatFather.init(self,name)直接调用父类的方法。
运行结果如下:
if __name__ == "__main__": main() 胖子老板的类被调用啦! FatFather的init开始被调用 调用FatFather类的name是胖子老板 FatFather的init调用结束 胖子老板 的爱好是 打斗地主
二、super() 方法基本概念
除了直接使用 FatFather.init(self,name) 的方法,还可以使用super()方法来调用。
那么首先需要看super()方法的描述和语法理解一下super() 方法的使用。
2.1 描述
super() 函数是用于调用父类(超类)的一个方法。
super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。
MRO 就是类的方法解析顺序表, 其实也就是继承父类方法时的顺序表。
热心网友 时间:2022-04-29 13:50
super就是在子类中调用父类方法时用的。
class FooParent(object):如果解决了您的问题请采纳!
如果未解决请继续追问