標籤:編寫 情況 情境 需要 組成 位置 步驟 其他 self
一、面向過程、物件導向對比1、面向過程根據商務邏輯從上到下寫壘代碼2、函數式思想將某功能代碼封裝到函數中,日後便無需重複編寫,僅調用函數即可3、物件導向對函數進行分類和封裝1、2、3一步一步抽象,函數式是走向物件導向的中間步驟函數式的應用情境 --> 各個函數之間是獨立且無共用的資料物件導向編程的應用情境:各個函數公用一組資料4、基於並發的編程Erlang語言提出的並發,單進程、單線程多進程、多線程的編程方式5、一般在Python開發中,全部使用物件導向 或 物件導向和函數式混合使用 二、物件導向物件導向編程是一種編程方式,此編程方式的落地需要使用 “類” 和 “對象”來實現,所以,物件導向編程其實就是對 “類” 和 “對象” 的使用。1、類:由屬性和方法組成2、屬性3、方法4、執行個體化:建立一個類的執行個體,類的具體對象。5、對象:根據模板建立的執行個體,通過執行個體對象可以執行類中的屬性和方法6、繼承:即一個衍生類別(derived class)繼承基類(base class)的欄位和方法7、方法重寫:如果從父類繼承的方法不能滿足子類的需求,可以對其進行改寫,這個過程叫方法的覆蓋(override),也稱為方法的重寫。 三、對象對象是描述其屬性的資料以及對這些資料施加的一組操作封裝在一起構成的統一體。1、程式中所有東西都是對象;2、對象具有狀態和行為:其中狀態儲存在一組變數中,行為則通過方法實現。3、對象的方法一方面把對象的內部變數包裹、保護起來,使得只有對象自己的方法才能操作這些內部變數;另一方面,對象的方法還是對象與外部環境和其他對象互動、通訊的介面,外界對象通過這些介面驅動對象執行指定的行為,提供相應的服務。 四、類類描述了同一類對象都具有的資料和行為。(1)類就是一個模板,模板裡可以包含多個函數,函數裡實現一些功能(2)對象則是根據模板建立的執行個體,通過執行個體對象可以執行類中的函數 1、建立類(1)class Foo(object):類名首字母要大寫,繼承object類empCount = 0empCount是一個類屬性(也叫靜態屬性),它的值將在這個類的所有執行個體之間共用。你可以在內部類或外部類使用Employee.empCount訪問def __init__(self,name,age): 建構函式self.name=nameself.age=age類的構造方法或初始化方法,只要建立類的執行個體,就會調用這個方法。如果沒顯示定義這個方法,預設會給一個空的構造方法。def bar(self):self:代表執行個體本身並且類中所有的方法中都必須有self,並且寫在第一個參數位置obj=Foo() 執行個體化,函數中的self會自動把執行個體賦值給self,不需要手動賦值建立對象,類名稱後加括弧即可obj.bar() 執行bar方法(2)def __inti__(self,*args): 使用了元祖參數,對於變數不確定的情況if len(args)==2:self.name=nameself.age=ageelse:print ‘no salary‘ 2、建立執行個體對象要建立一個類的執行個體,可以使用類的名稱,並通過__init__()方法來接受參數建立一個類的具體對象。每次從類產生執行個體時,Python都會自動調用名為__init__的方法,也就是類的構造方法,進行資料初始化。新執行個體會如往常那樣傳入__init__的self參數。該方法也會在類中被繼承。 五、類與對象在記憶體中的調用關係1、類與對象在記憶體中的儲存情況類以及類中的方法在記憶體中只有一份,而根據類建立的每一個對象都在記憶體中需要存一份類:儲存屬性和方法對象:儲存自己的屬性和類對象指標(使用對象中的方法時,去類的記憶體中找具體的方法)根據類建立對象時,對象中除了封裝 name 和 age 的值之外,還會儲存一個類對象指標,該值指向當前對象的類。當通過 obj1 (執行個體)執行類中的方法時,過程如下:根據當前對象中的 類對象指標 找到類中的方法將對象 obj1 當作參數傳給 方法的第一個參數 self(執行個體方法加self的真正目的)
Python之物件導向:物件導向基礎