取精華,去糟粕;重基礎,促創新
一.編程範式
面向過程:根據業務邏輯從上到下寫壘代碼
函數式:將某功能代碼封裝到函數中,日後便無需重複編寫,僅調用函數即可
面向對象:對函數進行分類和封裝,讓開發“更快更好更強…”
二.面向對象
面向對象不像面向過程那樣按照功能劃分模塊,它所關注的是軟件系統有哪些參與者,把這些參與者稱爲對象,找出這些軟件系統的參與者也就是對象之後,分析這些對象有哪些特徵、哪些行爲,以及對象之間的關係,所以說面向對象的開發核心是對象
三.類和對象
1.面向對象編程的2個非常重要的概念:類和對象
類是對象的類型,具有相同屬性和行爲事物的統稱。類是抽象的,在使用的時候通常會找到這個類的一個具體存在。
2.類是對象的類型,對象是類的實例。類是抽象的概念,而對象是一個你能夠摸得着,看得到的實體。二者相輔相成,誰也離不開誰。
四.類的構成
類的名稱:類型
屬性:對象的屬性
方法:對象的方法
五.創建和使用類
1.類定義:
class類名:
屬性列表
方法列表
示例如下:
2.類的屬性分類:
類屬性
實例屬性
類變量:類變量在整個實例化的對象中是公用的。類變量定義在類中且在函數體之外。類變量通常不作爲實例變量使用。如果需要用在類的方法中,使用類名.類屬性.
實例變量:定義在方法中的變量,只作用於當前實例的類。
3.類的屬性的操作方法
(1)可以使用點實例化對象名+.來訪問對象的屬性
(2)也可以使用以下函數的方式來訪問屬性
getattr(obj,name[, default]) : 訪問對象的屬性
hasattr(obj,name) : 檢查是否存在一個屬性
setattr(obj,name,value) : 設置一個屬性。如果屬性不存在,會實例化對象中創建一個新屬性
delattr(obj,name) : 刪除屬性(類名和實例化對象都無法訪問)
注意:name需要加單引號,obj爲實例化對象名稱
4.內置屬性
Python內置類屬性
__dict__ : 類的屬性(包含一個字典,由類的屬性名:值組成) 實例化類名.__dict__
__doc__ :類的文檔字符串 (類名.)實例化類名.__doc__
__name__: 類名,實現方式 類名.__name__
__bases__ : 類的所有父類構成元素(包含了以個由所有父類組成的元組)
5.__init__()構造方法和self
__init__()是一個特殊的方法屬於類的專有方法,被稱爲類的構造函數或初始化方法,方法的前面和後面都有兩個下劃線。
這是爲了避免Python默認方法和普通方法發生名稱的衝突。每當創建類的實例化對象的時候,__init__()方法都會默認被運行。作用就是初始化已實例化後的對象。
在方法定義中,第一個參數self是必不可少的。類的方法和普通的函數的區別就是self,self並不是Python的關鍵字,你完全可以用其他單詞取代他,只是按照慣例和標準的規定,推薦使用self。
6.__name__
__name__:如果是放在Modules模塊中,就表示是模塊的名字;
如果是放在class類中,就表示類的名字;
__main__:模塊,xxx.py文件本身,被直接執行時,對應的模塊名就是__main__了
可以在if __name__== “__main__”:
中添加你自己想要的,用於測試模塊,演示模塊用法等代碼。
作爲模塊,被別的Python程序導入(import)時,模塊名就是本身文件名xxx了。
7.小結
類(Class): 用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個對象所共有的屬性和方法。對象是類的實例。
類屬性:類變量在整個實例化的對象中是公用的。類屬性定義在類中且在函數體之外。類屬性通常不作爲實例變量使用。
實例屬性:定義在方法中的,只作用於當前實例的類。
數據成員:類屬性或者實例屬性(方法中的變量)用於處理類及其實例對象的相關的數據。
方法:類中定義的函數。
方法重寫:如果從父類繼承的方法不能滿足子類的需求,可以對其進行改寫,這個過程叫方法的覆蓋(override),也稱爲方法的重寫。(後面講繼承的時候介紹)
實例化對象:創建一個類的實例,類的具體對象。