十四單元 Python面向?qū)ο?/p>
一、面向?qū)ο?/b>
類(lèi). 類(lèi)變量. 數(shù)據(jù)成員. 方法重寫(xiě). 局部變量. 實(shí)例變量. 繼承. 實(shí)例化. 方法. 對(duì)象
二、創(chuàng)建類(lèi)
classClassName:
'類(lèi)的幫助信息'#類(lèi)文檔字符串
class_suite#類(lèi)體
三、創(chuàng)建實(shí)例對(duì)象
1、創(chuàng)建
"創(chuàng)建 Employee 類(lèi)的第一個(gè)對(duì)象"
emp1=Employee("Zara",2000)
"創(chuàng)建 Employee 類(lèi)的第二個(gè)對(duì)象"
emp2=Employee("Manni",5000)
2、訪問(wèn)屬性
emp1.displayEmployee()
emp2.displayEmployee()
print"Total Employee %d"%Employee.empCount
3、增刪改
emp1.age=7# 添加一個(gè) 'age' 屬性
emp1.age=8# 修改 'age' 屬性
delemp1.age# 刪除 'age' 屬性
也可以使用以下函數(shù)的方式來(lái)訪問(wèn)屬性:
getattr : 訪問(wèn)對(duì)象的屬性。
hasattr : 檢查是否存在一個(gè)屬性。
setattr : 設(shè)置一個(gè)屬性。如果屬性不存在,會(huì)創(chuàng)建一個(gè)新屬性
delattr: 刪除屬性。
hasattr(emp1,'age')# 如果存在 'age' 屬性返回 True。
getattr(emp1,'age')# 返回 'age' 屬性的值
setattr(emp1,'age',8)# 添加屬性 'age' 值為 8
delattr(emp1,'age')# 刪除屬性 'age'
四、Python內(nèi)置類(lèi)屬性
dict : 類(lèi)的屬性
doc :類(lèi)的文檔字符串
name: 類(lèi)名
module: 類(lèi)定義所在的模塊
bases : 類(lèi)的所有父類(lèi)構(gòu)成元素
五、類(lèi)的繼承
1、繼承介紹
通過(guò)繼承創(chuàng)建的新類(lèi)稱(chēng)為子類(lèi)或派生類(lèi),被繼承的類(lèi)稱(chēng)為基類(lèi)、父類(lèi)或超類(lèi)
2、語(yǔ)法
class派生類(lèi)名(基類(lèi)名)
?? ...
3、可以繼承多個(gè)類(lèi)
classA:# 定義類(lèi) A
.....
classB:# 定義類(lèi) B
.....
classC(A,B):# 繼承類(lèi) A 和 B
.....
六、方法重寫(xiě)
1、概念
如果你的父類(lèi)方法的功能不能滿足你的需求,你可以在子類(lèi)重寫(xiě)你父類(lèi)的方法
七、基礎(chǔ)重載方法
序號(hào)方法、描述、簡(jiǎn)單的調(diào)用
1*init* ( self [,args...] ) 構(gòu)造函數(shù) 簡(jiǎn)單的調(diào)用方法: obj = className(args)
2*del*( self ) 析構(gòu)方法, 刪除一個(gè)對(duì)象 簡(jiǎn)單的調(diào)用方法 : del obj
3*repr*( self ) 轉(zhuǎn)化為供解釋器讀取的形式 簡(jiǎn)單的調(diào)用方法 : repr(obj)
4*str*( self ) 用于將值轉(zhuǎn)化為適于人閱讀的形式 簡(jiǎn)單的調(diào)用方法 : str(obj)
5*cmp* ( self, x ) 對(duì)象比較 簡(jiǎn)單的調(diào)用方法 : cmp(obj, x)
八、運(yùn)算符重載
九、類(lèi)屬性與方法
1、類(lèi)的私有屬性
__pri_attr:兩個(gè)下劃線開(kāi)頭,聲明該屬性為私有
在類(lèi)內(nèi)部的方法中使用時(shí)self.__pri_attr
2、類(lèi)的方法
在類(lèi)的內(nèi)部,使用def關(guān)鍵字可以為類(lèi)定義一個(gè)方法
3、類(lèi)的私有方法 __pri_attr:兩個(gè)下劃線開(kāi)頭,聲明該方法為私有方法
在類(lèi)的內(nèi)部調(diào)用__pri_attr