|
1、類的繼承(直接在類名后面括號(hào)里面寫入要繼承的類名) 注:如果子類中定義與父類同名的方法或?qū)傩裕瑒t會(huì)自動(dòng)覆蓋父類對(duì)應(yīng)的方法或?qū)傩浴?/p> 解決上述問題的方法: a、調(diào)用未綁定的父類方法 b、使用super函數(shù)(優(yōu)點(diǎn)是不用給出任何基類的名字,python會(huì)自動(dòng)一層層找到基類中對(duì)應(yīng)的方法)
多重繼承(容易代碼混亂,應(yīng)盡量避免使用) 出現(xiàn)上述情況的時(shí)候,使用繼承和多重繼承都不合適,于是使用組合: 類、類對(duì)象和實(shí)例對(duì)象 類中的方法名與屬性名重名時(shí),類將被屬性覆蓋: 綁定:python嚴(yán)格要求方法需要有實(shí)例才能被調(diào)用,這種限制其實(shí)就是python所謂的綁定概念。 1、issubclass(class, classinfo) a、一個(gè)類被認(rèn)為是其自身的子類 b、classinfo可以是類對(duì)象組成的元組,只要class與其中任何一個(gè)候選子 類,則返回True 2、isinstance(object,classinfo) a、如果第一個(gè)參數(shù)不是對(duì)象,則永遠(yuǎn)返回False b、如果第二個(gè)參數(shù)不是類或者由類對(duì)象組成的元組,會(huì)拋出一個(gè)TypeError 異常。 3、hasattr(object,name):測試一個(gè)對(duì)象是否有指定的屬性 4、getattr(object, name[, default]):返回對(duì)象指定的屬性值 5、setattr(object,name,value):設(shè)置指定屬性的值 6、delattr(object,name):刪除對(duì)象中指定的屬性,如果屬性不存在拋出 異常。 2、多態(tài)(不同的對(duì)象對(duì)同一類方法的不同響應(yīng)) 3、self(對(duì)象的方法中會(huì)傳遞一個(gè)self參數(shù)) 由一個(gè)類可以生成多個(gè)對(duì)象,對(duì)象之間都極為相似,來源于同一個(gè)類,不同的對(duì)象調(diào)用方法時(shí)傳遞self參數(shù)告訴python當(dāng)前是哪個(gè)對(duì)象調(diào)用方法了。 4、python的魔法方法(總是被雙下劃線包圍) 1、__init__(self, param1, param2, ...):類似于java中的構(gòu)造方法
ps:init方法不能有返回值 2、__new__(cls[,...]):對(duì)象實(shí)例化時(shí)調(diào)用的方法,返回一個(gè)類對(duì)象 3、__del__(self):當(dāng)對(duì)象被銷毀的時(shí)候(垃圾回收機(jī)制)自動(dòng)調(diào)用 5、python定義私有屬性或方法 在python中定義私有的變量只需要在變量名或函數(shù)名前面加上"__"兩個(gè)下劃線,那么這個(gè)函數(shù)或變量就會(huì)變成私有的了。 ps:python將雙下劃線開頭的名字進(jìn)行了改編,改成"_類名_屬性名/方法名" 6、property方法
7、描述符(property的原理) 描述符:就是將某種特殊類型的類的實(shí)例指派給另一個(gè)類的屬性。 特殊類是指至少實(shí)現(xiàn)以下三個(gè)方法中的一個(gè)方法的類: a、__get__(self, instance, owner):用于訪問屬性,它返回屬性的值 b、__set__(self, instance, value):將在屬性分配操作中調(diào)用,不返回任何內(nèi)容 c、__delete__(self, instance):控制刪除操作,不返回任何內(nèi)容
自己實(shí)現(xiàn)一個(gè)property類,完成描述符的功能: #特殊的類要實(shí)現(xiàn)__get__、__set__、__delete__三個(gè)方法
應(yīng)用舉例:
#定義攝氏度類
8、對(duì)象的屬性訪問 a、__getattr__(self, name):定義當(dāng)一個(gè)用戶試圖獲取一個(gè)不存在的屬性時(shí)的行為 b、__getattribute__(self, name):定義當(dāng)該類的屬性被訪問時(shí)的行為 c、__setattr__(self, name, value):定義當(dāng)一個(gè)屬性被設(shè)置時(shí)的行為 d、__delattr__(self, name):定義當(dāng)一個(gè)屬性被刪除時(shí)的行為 9、注意魔法方法的死循環(huán) 屬性賦值時(shí),默認(rèn)自動(dòng)調(diào)用__setattr__方法 解決方法: a、調(diào)用基類的setattr方法(優(yōu)選) class Rectangle: b、使用對(duì)象的特殊屬性dict進(jìn)行賦值
|
|
|