一、面向過程、物件導向對比
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 = 0
empcount是乙個類屬性(也叫靜態屬性),它的值將在這個類的所有例項之間共享。你可以在內部類或外部類使用employee.empcount訪問
def __init__(self,name,age): 建構函式
self.name=name
self.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=name
self.age=age
else:
print 'no salary'
2、建立例項物件
要建立乙個類的例項,可以使用類的名稱,並通過__init__()方法來接受引數
建立乙個類的具體物件。每次從類產生例項時,python都會自動呼叫名為__init__的方法,也就是類的構造方法,進行資料初始化。新例項會如往常那樣傳入__init__的self引數。該方法也會在類中被繼承。
五、類與物件在記憶體中的呼叫關係
1、類與物件在記憶體中的儲存情況
類以及類中的方法在記憶體中只有乙份,而根據類建立的每乙個物件都在記憶體中需要存乙份
類:儲存屬性和方法
物件:儲存自己的屬性和類物件指標(使用物件中的方法時,去類的記憶體中找具體的方法)
根據類建立物件時,物件中除了封裝 name 和 age 的值之外,還會儲存乙個類物件指標,該值指向當前物件的類。
當通過 obj1 (例項)執行類中的方法時,過程如下:
根據當前物件中的 類物件指標 找到類中的方法將物件 obj1 當作引數傳給 方法的第乙個引數 self(例項方法加self的真正目的)
python之物件導向
類 是乙個特殊的物件,class a 定義的類屬於 類物件 類的例項 obj a 屬於 例項物件 例項屬性 init 定義例項屬性 例項方法 self 物件名.方法名 類屬性 針對類物件定義的屬性,訪問類屬性方法 類名.類屬性 物件名.類屬性 類方法 針對類物件定義的方法,內部可直接訪問類屬性和其他...
python之物件導向
python中一切皆物件 class 定義的類屬於類物件 obj1 屬於例項物件 在程式執行時,類同樣會載入到記憶體,類物件在記憶體中只有乙份,使用乙個類可以建立出很多例項物件 除了封裝例項的屬性和方法外,類物件還可以擁有自己的屬性和方法 類屬性和例項屬性 類屬性就是給類物件中定義屬性,通常用來記錄...
python之物件導向
物件導向介紹 一 物件導向和面向過程 面向過程 核心過程二字,過程即解決問題的步驟,就是先幹什麼後幹什麼 基於該思想寫程式就好比在這是一條流水線,是一種機械式的思維方式 優點 複雜的過程流程化 缺點 擴充套件性差 物件導向 核心是物件二字,物件指特徵與技能的結合體 基於該思想編寫程式就好比在創造乙個...