python3中类的继承
生活随笔
收集整理的這篇文章主要介紹了
python3中类的继承
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
用簡單的一句話來理解:繼承,這樣理解就對了,你的就是我的,但是我的還是我的,但是你有我也有的,我就不稀罕你的,所以調用了父類的時候,self就是我,而不是你
子類繼承父類,即子類擁有了父類的屬性和方法。
python中類的初始化都是__init__()。所以父類和子類的初始化方式都是__init__(),但是如果子類初始化時沒有這個函數,那么它便調用父類的__init__();如果實現了這個函數,就會覆蓋父類的初始化函數。如果繼承父類的__init__(),就需要在子類中顯示調用這個函數。實現如下:
情況1:子類沒有__init__函數,那么直接執行父類的__init__函數
#coding=utf-8 class Animal(object):def __init__(self):self.name='I am the super class' class Panda(Animal):def ok():print("I am the son class!!!") if __name__=='__main__': panda=Panda() print(panda.name) a = Panda() #子類是沒有構造函數的,那么直接調用父類的構造函數 print(a.name)情況2:
class Animal(object):def __init__(self):self.name = "我是父類"class Panda(Animal):def __init__(self):super().__init__() #使用super的方式來顯示調用父類的__init__()函數# 也可以使用第二種super初始化的方式super(Panda, self).__init__() if __name__=="__main__":panda = Panda() #實例化Pandaprint(panda.name)output1:
我是父類
self和super的區別:
- self是首先調用自身的方法如果自身沒有再去父類中找;super是直接從父類中找方法
- self是類,super是預編譯指令
- self class 和super calss的輸出是一樣的
input3
class Animal(object):def __init__(self):self.name = "我是父類"def A(self): #父類中的A方法print("父類的A方法")class Panda(Animal):def __init__(self):super().__init__()self.myname = "panda"def A(self): #子類中的A方法print("子類的A方法")def B(self):self.A() #self調用Asuper().A() #super調用Aif __name__=="__main__":panda = Panda()panda.B() #通過B函數來調用A方法,查看self和super的區別output3
子類的A方法 #我們說過self是先從自身找方法,沒有再去父類找 父類的A方法 #而super則是直接從父類中找參考自: https://www.jb51.net/article/163991.htm
總結
以上是生活随笔為你收集整理的python3中类的继承的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7 easybcd 安装cento
- 下一篇: win7系统硬盘安装centos7(ea