繼承與派生

來源:互聯網
上載者:User

標籤:python3   深度   背景   font   __init__   people   pre   函數   str   

繼承

1.什麼是繼承?

  在程式中繼承是一種建立子類的方式 新建立的類稱之為之類\衍生類別 被繼承的類稱之為父類\基類\超類

2.為何要用繼承?

  減少類與類之間代碼冗餘的問題

3.如何繼承?

  先抽象再繼承

 

python中繼承的特點分為單繼承和多繼承

class Parent:    passclass Parent2:    pass   class Sub1(Parent):    pass    #單繼承class Sub2(Parent,Parent2):    pass    #多繼承

python2和python3在繼承上的區別

新式類:但凡繼承object類的子類,以及該子類的子子類....都稱為新式類

經典類:沒有繼承object類的子類,以及該子類的子子類....都稱為經典類

 

只有python2中才區分新式類與經典類

 

 

派生

在子類派生出的新功能中如何重用父類的功能:

方式一:指名道姓地訪問某一個類中的函數 與繼承無關

 

class People:    def __init__(self,name,age):        self.name=name        self.age = ageclass Student(People):    def __init__(self,name,age,num):        People.__init__(self,name,age)        self.num = num

 

 

 

方式二:super 在python3中super不傳參數,調用該函數會得到一個特殊的對象,該對象是專門用來訪問父類中的屬性的

    強調:super會嚴格參照類的mro列表依次尋找屬性

class People:    def __init__(self,age,name):        self.age=age        self.name=name    class Teacher(People):    def __init__(self,age,name,salary):        super(Teacher,self).__init__(age,name)        self.salary = salary

 

 

屬性的尋找:

1.在單繼承背景中,無論是新式類還是經典類屬性尋找順序都一樣

先obj->類->父類......

2.在多繼承背景下,如果一個子類繼承了多個分支,但是多個分支沒有匯聚到一個非object類,無論是新式類還是經典類屬性尋找順序都一樣

會按照從左至右的順序一個分支一個分支的尋找下去

3.在多繼承背景下,如果一個子類繼承了多個分支,但是多個分支最終匯聚到一個非object類

新式類:廣度優先尋找

經典類:深度優先尋找

 

繼承與派生

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.