python學習之類的繼承

來源:互聯網
上載者:User

標籤:python、繼承

物件導向中一個重要的特性就是繼承,繼承的好處就是提高代碼的重用率,減少不必要的代碼。繼承是父類與子類的關係,當子類繼承了父類後,就具有了父類的所有變數和方法。在python中定義繼承的文法是:class 衍生類別名(基類名)。在使用python的繼承時需要注意一下幾點:

(1)當父類定義了__init__()初始化方法時,子類不會自動調用,而需要我們顯示調用,如果我們要擴充父類的變數,可以在__init__()添加參數。

(2)在調用基類的方法時,需要加上基類的類名首碼,且需要帶上self參數變數。

(3)Python總是首先尋找對應類型的方法,如果它不能在衍生類別中找到對應的方法,它才開始到基類中逐個尋找。

舉例說明

父類

#BaseModleclass BaseClass:    def __init__(self,name,age):        self.name=name        self.age=age        print ("baseclass is inited")    def speak(self,sth):        print("Baseclass is speaking :%s"%sth);if (__name__==‘__main__‘):    print("run by myself")    BaseClass()else :    print("i am import module")

‘‘‘

python中的__name__屬性:它表示當我們執行這個模組時,看它是否是使用者獨立執行的,還是通過import匯入後執行的,例如在這個例子中,我們執行派生模組SubModule,BaseModulde是匯入的模組,因此輸出了i am import module。

 每個Python模組都有它的__name__,如果它是‘__main__‘,這說明這個模組被使用者單獨運行,我們可以進行相應的恰當操作。

‘‘‘

衍生類別

#SubModuleimport BaseModuleclass SubClass(BaseModule.BaseClass):#需要加上模組名,否則出錯    def __init__(self,name,age,salary):        BaseModule.BaseClass.__init__(self,name,age)#顯示調用父類的初始化函數,並擴充變數        self.salary=salary        print("subClass is inited")    def talk(self ,sth):        print("%s is talking %s"%(self.name,sth))        BaseModule.BaseClass.speak(self,sth)#調用父類方法時需要指明模組名.父類名if(__name__=="__main__"):    print("run by myself")    s=SubClass("yping",25,1000)    s.talk("a story")

運行結果

>>> i am import modulerun by myselfbaseclass is initedsubClass is initedyping is talking a storyBaseclass is speaking :a story>>>

結果分析:

這裡首先輸出“i am import module”,說明程式是先從(__name__="__main__")判斷開始,首先執行父類的(__name__="__main__")判斷,由於現在不是直接執行BaseModule模組,因此輸出“i am import module”,接著執行子類的入口函數,執行個體化了一個SubClass類,首先父類初始化,然後衍生類別初始化,接著執行talk()函數,再調用父類speak()函數。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.