類的繼承


類的繼承

什么是繼承

繼承是一種新建類的方式,新建的類稱為子類,被繼承的類稱為父類

繼承的特性是:子類會遺傳父類的屬性

繼承是類與類之間的關系

為什么用繼承

使用繼承可以減少代碼的冗余

對象的繼承

Python中支持一個類同時繼承多個父類

class Parent1:
    pass


class Parent2:
    pass


class Sub1(Parent1, Parent2):
    pass

對象查找屬性的順序:對象自己-》對象的類-》父類-》父類

類的派生

派生:子類中新定義的屬性的這個過程叫做派生,並且需要記住子類在使用派生的屬性時始終以自己的為准

父類中沒有的屬性 子類中出現 叫派生屬性

父類中沒有的方法 子類中出現 叫派生方法

父類和子類都有 調用子類的 想調父類的要指出父類名稱調用

class Person:
    def __init__(self,name, sex, tel):
        self.name = name
        self.sex = sex
        self.tel = tel

class Man(Person):
    def __init__(self, name, sex, tel, high):
        #Person.__init__(self, name, sex, tel) #  調用父類變量
        super().__init__(name, sex, tel)  # 可以用super方法代替上面的方法  可以省略父類名和self
        self.hight = high      # 派生屬性
class Woman(Person): pass

類的組合

組合就是一個類的對象具備某一個屬性,該屬性的值是指向另外外一個類的對象

當類與類之間沒有直接邏輯關系,但是需要將他們聯合起來,就可以用組合

類的分類

新式類

繼承了object的類以及該類的子類,都是新式類

Python3中所有的類都是新式類

經典類

沒有繼承object的類以及該類的子類,都是經典類

只有Python2中才有經典類

菱形繼承問題

如果繼承關系為菱形結構,即子類的父類最后繼承了同一個類,那么屬性的查找方式有兩種:

  • 經典類下:深度優先
  • 新式類下:廣度優先
  • 經典類:一條路走到黑,深度優先

mro()方法

用來查看類的繼承順序

print(A.mro()) 

遵循如下三條准則:

子類會先於父類被檢查

多個父類會根據它們在列表中的順序被檢查

如果對下一個類存在兩個合法的選擇,選擇第一個父類

類的多態與多態性

多態

多態指的是一類事物有多種形態,(一個抽象類有多個子類,因而多態的概念依賴於繼承)

多態性

多態性是指具有不同功能的函數可以使用相同的函數名,這樣就可以用一個函數名調用不同內容的函數。

多態性的好處

增加了程序的靈活性:以不變應萬變,不論對象千變萬化,使用者都是同一種形式去調用,如func(animal)

增加了程序額可擴展性:通過繼承Animal類創建了一個新的類,使用者無需更改自己的代碼,還是用func(animal)去調用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM