" />

亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python基礎面向對象之繼承與派生詳解

 更新時間:2022年11月04日 10:45:12   作者:Kkkkangsh  
這篇文章主要為大家介紹了Python基礎面向對象之繼承與派生詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

一、面向對象三大特征之繼承

python三大特征:

封裝、繼承、多態(tài)

三者中繼承最為核心,實際應用多,感受較為直觀

封裝和多態(tài)略微抽象

1、繼承的概念

繼承的含義:

在現實生活中,繼承表示人與人之間資源的從屬關系

例如:兒子繼承父親

在編程的世界中,繼承表示類與類之間的資源從屬關系

例如:類a繼承類b

繼承的目的:

在現實生活中,兒子繼承了附件就擁有了父親所有資源的支配權限

在編程世界中,類A繼承了類B就擁有了類B中所有的數據和方法使用權限

2、繼承的本質

繼承本質應該分為兩部分:

當多個類中含有相同部分時,我們就把相同的部分抽離出去,將相同的部分新成一個新的類,在用剛才被抽離出去相同部分的類,去繼承新的那部分,這樣的好處就是,當多個類需要一個相同用的功能時,可以節(jié)省代碼,不用反復編寫

抽象:將多個類相同的東西抽出去,形成一個新的類

繼承:將多個類繼承剛剛抽取出來的新的類

對象>>>:數據與功能的結合體

類(子類)>>>:多個對象相同功能和數據的結合體

父類>>>:多個子類相同功能和數據的結合體

本質:類、父類的本質都是為了節(jié)省代碼,減少重復編寫相同代碼的時間,使用時更為方便

3、繼承的實操

在定義類的時候,類名后方可加括號,早括號內填入其他它類的名字,就意味著繼承了其它類

python支持多類繼承,括號內可填寫多個類名,只需用逗號隔開即可

# 1、定義兩個類,其中一個假設為父類,另一個假設為子類
class Father: 
    money = 99999999
    house = '老北京四合院'  # 父類中數據強大
class Son:
    pass  # 子類中空空如也
# 2、父類中的數據,子類無權直接使用,當我們在子類中繼承父類后,子類和子類產生的對象都可以通過'點'的方式使用父類中的數據
class Father:
    money = 99999999
    house = '老北京四合院'
class Son(Father):
    pass
# 子類直接使用父類中的數據
print(Son.money)
# 子類產生的對象使用父類中的數據
obj1 = Son()
print(obj1.money)
------------------------------------------------------------------------------------
99999999
99999999

4、繼承后名字查找的順序

未繼承:

對象(object)自身名稱空間>>>類的名稱空間

單線繼承:

對象(object)自身名稱空間>>>子類的名稱空間>>>父類的名稱空間

多線繼承:

1、菱形繼承: (廣度優(yōu)先,最后才會找閉環(huán)的定點)

對象自身名稱空間>>>子類名稱空間>>>父類名稱空間(形參內由左至右)>>>閉環(huán)

2、非菱形繼承: (深度優(yōu)先)

對象自身名稱空間>>>子類名稱空間>>>父類名稱空間(形參內由左至右)

在一個子類綁定多個父類時,名字的查找順序可能比較難理解,針對這個問題,可以使用python中內置方法:mor()   

通過對象名點mor() 的方式,可以幫助我們查看名字的查找順序

5、經典類與新式類

經典類:

不繼承object的類或者其子類的類

新式類:

繼承object或者其之類的類

在python3中,只有新式類,所有類都默認繼承object

在python2中,區(qū)分經典類和新式類

在以后我們定義類的時候,如果沒有明確的父類,可以在類的括號內填入object,這樣話能夠提高我們代碼的兼容性

二、派生

1、派生的概念

派生是指,子類繼承父類,派生出自己的屬性與方法,并且重用父類的屬性與方法

2、派生的方法

1.直接引用父類的__ init __為其傳參,并添加子類屬性

缺點:代碼重復率太高,浪費資源,時間

class People:
    school = '清華大學'
    def __init__(self, name, sex, age):
        self.name = name
        self.sex = sex
        self.age = age
class Teacher(People):
    def __init__(self, name, sex, age, title): #派生
        self.name = name
        self.sex = sex
        self.age = age
        self.title = title
    def teach(self):
        print(f'{self.name}是老師')
obj = Teacher('lili','female', 28, '高級教師') 
#只會找自己類中的__init__
print(obj.name, obj.sex, obj.age, obj.title)  
#lili female 28 高級教師

2.通過super()來只想父類的屬性

super()是一個特殊的類,在子類__ init __內調用super得到一個對象,該對象指向父類的名稱空間

class Teacher(People):
    def __init__(self, name, sex, age, title):
        super().__init__(name, age, sex)
        #調用的是綁定方法,自動傳入self
        self.title = title
	 def teach(self):
         print(f'{self.name}是老師')
obj = Teacher('lili','female', 28, '高級教師') 

注意:在python2中super 的使用需要完整地寫成super(自己的類名,self),而在python3中可以簡寫為super()。

以上就是Python基礎面向對象之繼承與派生詳解的詳細內容,更多關于Python面向對象繼承派生的資料請關注腳本之家其它相關文章!

相關文章

  • 可能是史上最細的python中import詳解

    可能是史上最細的python中import詳解

    import在python中的意思是用來調用模塊的,下面這篇文章主要給大家介紹了關于python中import詳解的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-02-02
  • numpy中幾種隨機數生成函數的用法

    numpy中幾種隨機數生成函數的用法

    numpy是Python中常用的科學計算庫,其中也包含了一些隨機數生成函數,本文主要介紹了numpy中幾種隨機數生成函數的用法,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • pytorch 實現在一個優(yōu)化器中設置多個網絡參數的例子

    pytorch 實現在一個優(yōu)化器中設置多個網絡參數的例子

    今天小編就為大家分享一篇pytorch 實現在一個優(yōu)化器中設置多個網絡參數的例子,具有很好參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • django中path和url函數的具體使用

    django中path和url函數的具體使用

    本文主要介紹了django中path和url函數的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • Python任務調度利器之APScheduler詳解

    Python任務調度利器之APScheduler詳解

    所謂的任務調度是指安排任務的執(zhí)行計劃,即何時執(zhí)行,怎么執(zhí)行等。這篇文章主要介紹了Python任務調度利器之APScheduler詳解,需要的朋友可以參考下
    2020-04-04
  • python處理二進制數據的方法

    python處理二進制數據的方法

    這篇文章主要介紹了python處理二進制數據的方法,涉及Python針對二進制數據的相關操作技巧,需要的朋友可以參考下
    2015-06-06
  • pytorch保存和加載模型的方法及如何load部分參數

    pytorch保存和加載模型的方法及如何load部分參數

    本文總結了pytorch中保存和加載模型的方法,以及在保存的模型文件與新定義的模型的參數不一一對應時,我們該如何加載模型參數,對pytorch保存和加載模型相關知識感興趣的朋友一起看看吧
    2024-03-03
  • 利用python判斷字母大小寫的幾種方法小結

    利用python判斷字母大小寫的幾種方法小結

    在開發(fā)過程中有時候我們需要判斷一個字符串是否是小寫形式,下面這篇文章主要給大家介紹了關于利用python判斷字母大小寫的幾種方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • Python Flask請求擴展與中間件相關知識總結

    Python Flask請求擴展與中間件相關知識總結

    今天帶大家學習的是關于Python Flask的相關知識,文章圍繞著Flask請求擴展與中間件的知識展開,文中有非常詳細的介紹,需要的朋友可以參考下
    2021-06-06
  • 解析Python擴展模塊的加速方案

    解析Python擴展模塊的加速方案

    這章我們來介紹Python的擴展名之ctypes,教大家認識ctypes,有需要的朋友可以借鑒參考下,希望可以有所幫助,祝大家多多進步,早日升職加薪
    2021-09-09

最新評論