我的Python學習之路十五:面向對象(一)

取精華,去糟粕;重基礎,促創新

一.編程範式

面向過程:根據業務邏輯從上到下寫壘代碼

函數式:將某功能代碼封裝到函數中,日後便無需重複編寫,僅調用函數即

面向對象:對函數進行分類和封裝,讓開發“更快更好更強…”

二.面向對象

       面向對象不像面向過程那樣按照功能劃分模塊,它所關注的是軟件系統有哪些參與者,把這參與者稱爲對象,找出這些軟件系統的參與者也就是對象之後,分析這些對象有哪些特徵、哪些行爲,以及對象之間的關係,所以說面向對象的開發核心是對象

 

三.類和對象

 

      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是必不可少的。類的方法和普通的函數的區別就是selfself並不是Python的關鍵字,你完全可以用其他單詞取代他,只是按照慣例和標準的規定,推薦使用self

6.__name__

 

__name__:如果是放在Modules模塊中,就表示是模塊的名字;

   如果是放class中,就表示類的名字;

__main__模塊,xxx.py文件本身,直接執行,對應的模塊名就是__main__

可以if __name__== “__main__”:

中添加你自己想要的,用於測試模塊,演示模塊用法等代碼。

作爲模塊,被別的Python程序導入(import)時,模塊名就是本身文件名xxx了。

7.小結

 

(Class): 用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個對象所共有的屬性和方法。對象是類的實例。

屬性類變量在整個實例化的對象中是公用的。類屬性定義在類中且在函數體之外。類屬性通常不作爲實例變量使用

實例屬性:定義在方法中的,只作用於當前實例的類

數據成員:類屬性或者實例屬性(方法中的變量)用於處理類及其實例對象的相關的數據

方法:類中定義的函數。

方法重寫:如果從父類繼承的方法不能滿足子類的需求,可以對其進行改寫,這個過程叫方法的覆蓋(override),也稱爲方法的重寫。(後面講繼承的時候介紹)

實例化對象:創建一個類的實例,類的具體對象

 

 


 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章