python 學習筆記十四 繼承、多態、垃圾回收、特殊方法

繼承

  • 繼承是面向對象的三大特性之一
  • 繼承可以讓一個類獲取其他類的屬性和方法
  • 在定義類時,可以在類名後面的括號中指定當前類的父類(也稱爲超類,基類,super),子類(也稱爲衍生類)可以直接繼承父類中的所有方法和屬性
    在這裏插入圖片描述

繼承的優點

  • 繼承可以讓子類直接獲得父類的屬性和方法,避免編寫重複代碼,同時也符合OCP原則(開閉原則) ;
  • 創建類時省略父類,則默認父類爲object,object是所有類的父類;

issubclass(a,b)

  • 判斷一個類(a)是否a是另一個類(b)的子類,成立則返回True,否則返回false;
    在這裏插入圖片描述

方法的重寫

  • 如果子類中存在與父類同名的方法,則通過子類示例調用該方法時,會調用子類的方法而不是父類的方法,稱這個現象爲方法的重寫(覆蓋,override)
  • 調用某對象的方法時,會優先去當前對象中尋找是否具有該方法,如果有則直接調用,如果沒有則去父類中尋找,以此類推;
    在這裏插入圖片描述

super

  • 繼承時父類的所有方法都會被子類繼承,包括特殊方法;
    在這裏插入圖片描述
  • super()可以直接獲得當前類的父類,
  • 當子類中某些時候需要調用父類的方法時可以直接使用super.方法名,常用的是super().__ init __(參數)
    在這裏插入圖片描述

多重繼承

  • 在python中支持多重繼承,也就是可以爲一個類同時指定多個父類
  • 類名.__ bases __ (雙下劃線)這個屬性可以獲取當前類的所有直接父類
    在這裏插入圖片描述
  • 一個子類擁有多個父類的時候,子類會擁有所有父類的方法和屬性
    在這裏插入圖片描述
    • 如果在多個父類中都有同名的方法,則會先在第一個父類中尋找,然後找第二個,第三個……排在前面的會覆蓋後面的;

多態

  • 多態是面向對象的三大特徵之一,保證了程序的靈活性
  • 違反多態性會導致適應性差,但會增加健壯性;
  • 多態就是一類事物有多種形態,如序列有多種形態:字符串,列表,元組

多態性

  • 不同的對象調用相同的函數實現不同的效果;
    在這裏插入圖片描述

垃圾回收

  • 在程序中沒有被變量引用的對象就是垃圾
    在這裏插入圖片描述

垃圾回收機制

  • python中會自動回收垃圾機制,它會自動刪除沒有引用的對象
  • 程序結束後,對象也會被自動刪除
  • 定義 __ del __()函數,觀察回收過程;
    在這裏插入圖片描述

特殊方法

  • 特殊方法以雙下劃線__開頭和結尾,一般不需要手動調用而是在特殊情況自動執行

__init__函數

  • 用於對象的初始化

__del__函數

  • 用於對象的刪除

__new__函數

  • 用於對象的創建

__str__函數

  • 打印對象時,實際上打印的是對象中特殊方法__str__的返回值
  • str會在嘗試將對象轉化爲字符串時調用,可以用它來指定對象轉化成字符串後的結果
    直接打印對象
    在這裏插入圖片描述
    重寫__str__函數後打印對象
    在這裏插入圖片描述

__repr__函數

  • __repr__在當前對象使用repr()函數時調用,其作用是指定對象在“交互模式中”直接輸出的結果
    在這裏插入圖片描述

__lt__函數

  • __ lt __(self,other) 小於

__le__函數

  • __ le __(self,other)小於等於

__eq__函數

  • __ eq __(self,other)等於

__ne__函數

  • __ ne __(self,other)不等於

__gt__函數

  • __ gt __(self,other)大於

__ge__函數

  • __ ge __(self,other)大於等於
    在這裏插入圖片描述

__len__函數

  • __ len__(self)獲取對象的長度

object.__bool__函數

  • object.__ bool__(self)將對象轉換爲bool,非空值轉化爲True,空值爲False;
  • 可以重寫該函數來指定轉換爲bool的結果

__add__函數

  • __ add__(self,other)將兩個對象相加並返回結果;

__sub__函數

  • __ sub__(self,other)將兩個對象相加並返回結果;

__mul__函數

  • __ mul__(self,other)將兩個對象相乘並返回結果;

__matmul__函數

  • __ matmul__(self,other)將兩個對象相除並返回結果;
發佈了55 篇原創文章 · 獲贊 27 · 訪問量 7280
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章