目錄類指的是一系列物件相同的特徵與技能的結合體
先抽象,抽取物件之間相同的特徵與技能
再定義,
1.會產生乙個類的命名空間
2.會把類內部的多有名字,扔進該命名空間內
注意:定義類時,就會執行類內部的**,若語法不正確,則會報錯
呼叫類會產生乙個物件,呼叫類的過程稱之為類的例項化,物件稱之為類的乙個例項
1.呼叫類時會產生乙個物件的命名空間
2.會觸發__init__,接著把物件與括號內所有的引數都傳給__init__(),物件當作第乙個引數
3.在__init__內部沒有,可以給物件新增屬性
1先找物件自己有沒有,
2.沒有就去類中找
3.若此類是子類,會去父類中查詢。
類來呼叫,類內部的方法只是普通的函式,函式需要幾個引數,就傳入幾個引數。
由物件由來呼叫,會自動把物件當作第乙個引數傳入該方法。
注意:不同物件的物件呼叫該繫結方法,會將不同的物件傳入該繫結方法中
在python中,一切皆物件
python八大資料型別
list, tuple, set, dict, float, int, bool, str
內建函式:filter
繼承指的是新建類的方式,新建的類指的是子類或派生類,子類可以繼承乙個父類,父類又可以稱之為基類或超類
必須 」先抽象,再繼承「
抽象:抽取相似的部分
—先抽象:抽取類與類之間相同的特徵與技能
—再繼承:確定好子類與父類,定義父類,父類中寫類與類之間相同的特徵與技能,子類繼承父類的屬性
類是物件與物件之間的關係,類是一系列物件相同的特徵與技能的結合體
繼承是類與類之間的關係,子類與父類是一種從屬關係
派生指的是子類繼承父類的屬性,並派生出自己的屬性
子類可以派生出自己的屬性,並重用父類的屬性
1.__init__直接呼叫類,類名.屬性的方式衝重用父類的屬性
2.super(),super().指向父類的命名空間,重用父類的屬性
注意:子類派生出與父類相同的屬性,以子類為主
1.先在物件中查詢
2.物件中沒有,在類中查詢
3.類中沒有,若類為子類,會在父類中查詢
4.物件查詢屬性,若子類有,不管父類有沒有,以子類為準
新式類:繼承object的類
經典類:在python2中沒有繼承object的類
新式類:廣度優先
經典類:深度優先
組合指的是乙個物件的屬性是另乙個物件
組合的作用:與繼承一樣,解決**冗餘問問題
繼承的優點:編寫的複雜程度沒有組合高
繼承的缺點:耦合度太高,可擴充套件性差
組合的優點:可以讓類與類之間耦合,可擴充套件性高
組合的缺點:編寫複雜程度高於繼承
封裝指的是把一堆屬性,封裝到物件中,物件就好比乙個袋子,或乙個容器
優點:方便資料的訪問,可以通過 物件.屬性 的方法獲取資料
封裝是物件導向的核心
在類內部,凡是以__開頭的屬性,都會被隱藏,實際是變形成為 __類名__ 屬性
python的內建的裝飾器,主要給類內部的方法使用,使用他的目的是將類內部的方法(def方法名)變成了(def方法)
注意:不能對被裝飾過的方法屬性修改
同一種事物的多種形態
多型的目的:是為了統一**的編寫規範
多型的實現方式:
繼承:子類繼承父類的特徵
抽象類:
1.匯入乙個abc模組
2.讓父類繼承乙個(metaclass=abc.abcmeta)
3.給類內部所有方法加上乙個@abc.abstractmethod
子類繼承抽象類,強制讓子類繼承父類的方法,缺一不可
鴨子型別:
只要你長得像鴨子,並且行為與鴨子一摸一樣,呢麼你就是鴨子
同一種事物的類,都有相同的功能,該這些類都在內部定義相同名稱的方法
是乙個方法,用來裝飾在類內部的方法,可以讓該方法變成類的繫結方法
物件的繫結方法:由物件來呼叫,會將物件當作第乙個引數傳入該方法,不同的物件呼叫該方法,則會將不同的物件傳入到該繫結方法中
類的繫結方法:由類來呼叫,會將類當作第乙個引數傳入該方法。
是乙個裝飾器,可以裝飾類內部的方法,使該方法既不繫結給物件,也不繫結給類,誰都可以呼叫,並且沒有自動傳值的效果
簡而言之,非繫結方法就是將普通方法放到類中使用
isinstance
判斷乙個物件是不是另乙個類的例項
issubclass
判斷乙個類是不是另乙個類的子類
反射反射:通過字串操作物件或類的屬性
hasattr:通過字串,判斷字串是否是乙個物件或類的屬性
getattr:通過字串,獲取物件的屬性
setattr:通過字串,設定物件的屬性
delattr:通過字串刪除乙個物件或類的屬性
魔法方法
__new__ 會在__init__執行前觸發
__init__ 會在類被呼叫的時候觸發
__str__ 會在列印的時候觸發
__getattr__ 會在物件.屬性時,屬性沒有的時候觸發
__setattr__ 會在 物件.屬性 = 屬性值 的時候觸發
__del__ 會在物件被登出前執行,該方法會在最後執行
__call__ 會在物件被呼叫的時候觸發
總複習小結
總複習小結 1 經過一學期的程式設計學習,初步認識基礎資料型別,語句結構,可以做一些簡單的程式設計。此次複習總結了一部分的函式 程式設計技巧及易錯知識點。2 符號常量,定義後不再被賦值,習慣上用大寫字母。例 define pi 3.14 const double pi 3.1415 定義最大值 de...
總複習測試(二)
解析 read 是讀取字元!readline 是讀取字串 解析 此題考的是directory和directoryinfo的區別,directory類的方法都是靜態的,可以直接呼叫,directoryinfo類的方法不是靜態的,所以要通過例項化呼叫 directory包含exist 方法,direct...
C 總複習 型別轉換
1.常見型別轉換 int i double d 2.5 i 1.5 隱式型別轉換 i int 1.5 顯式型別轉換 i d 隱式型別轉換 i int d 顯式型別轉換 一般情況下,int 型轉換為int型是非常不可思議的 即非常危險的 編譯器不允許隱式型別轉換的發生,報出錯誤。如果一定要完成這種不能...