類(lèi)的定義: 類(lèi)是用來(lái)描述具有相同的屬性和方法的對(duì)象的集合,。它定義了該集合中的每個(gè)對(duì)象所共有的屬性和方法,。對(duì)象時(shí)類(lèi)的實(shí)例。 二,、Python創(chuàng)建類(lèi): 使用class語(yǔ)句來(lái)創(chuàng)建一個(gè)新類(lèi),,class之后為類(lèi)的名稱(chēng)并以冒號(hào)結(jié)尾,類(lèi)的組成包括成員變量和成員函數(shù),。 三,、Python構(gòu)造函數(shù)和析構(gòu)函數(shù): 1.__init__()方法是一種特殊的方法,被稱(chēng)為類(lèi)的構(gòu)造函數(shù)或初始化方法,,當(dāng)創(chuàng)建了這個(gè)類(lèi)的實(shí)例時(shí)就會(huì)調(diào)用該方法,。 2.__del__(),被稱(chēng)為類(lèi)的析構(gòu)函數(shù),,__del__()在對(duì)象消逝的時(shí)候被調(diào)用,,當(dāng)對(duì)象不再被使用時(shí),,__del__()方法運(yùn)行 四、Python創(chuàng)建實(shí)例對(duì)象 要?jiǎng)?chuàng)建一個(gè)類(lèi)的實(shí)例,,可以使用類(lèi)的名稱(chēng),,并通過(guò)__init__方法接受參數(shù) 可以使用點(diǎn)(.)來(lái)訪(fǎng)問(wèn)對(duì)象的屬性 類(lèi)的文檔字符串可以通過(guò)ClassName.__doc__查看 count是類(lèi)屬性,所以可以直接用類(lèi)名.類(lèi)屬性來(lái)調(diào)用 類(lèi)方法也可以使用類(lèi)名.類(lèi)方法來(lái)調(diào)用,,eg:User().類(lèi)方法名稱(chēng) 五,、Python內(nèi)置類(lèi)屬性 __doc__:類(lèi)的文檔字符創(chuàng) __name__:類(lèi)名 __module__:類(lèi)定義所在的模塊(類(lèi)的全名是'__main__.className',如果累位于一個(gè)導(dǎo)入模塊mymod中,,那么className.__module__等于mymod) __bases__:類(lèi)的所有父類(lèi)構(gòu)成元素(包含了一個(gè)由所有父類(lèi)組成的元組) __dict__:類(lèi)的屬性(包含一個(gè)字典,,由類(lèi)的數(shù)據(jù)屬性組成) 六、Python對(duì)象銷(xiāo)毀(垃圾回收) 1,、同Java語(yǔ)言一樣,,Python使用了引用計(jì)數(shù)這一簡(jiǎn)單計(jì)數(shù)來(lái)追蹤內(nèi)存中的對(duì)象。 2,、垃圾回收機(jī)制不僅針對(duì)引用計(jì)數(shù)未0的對(duì)象,同樣也可以處理循環(huán)引用的情況,。 上述實(shí)例中入執(zhí)行:del u1,,則u1對(duì)象被銷(xiāo)毀,打?。篣ser destroyed 七,、Python類(lèi)的繼承 面向?qū)ο蟮淖兂蓭?lái)的主要好處之一就是代碼的重用,實(shí)現(xiàn)這種重用的方法之一就是通過(guò)繼承繼承機(jī)制,。 1,、聲明類(lèi)的時(shí)候括號(hào)中寫(xiě)要繼承的父類(lèi)。 2,、類(lèi)的繼承衍生出類(lèi)子類(lèi),,子類(lèi)可以繼承或重寫(xiě)父類(lèi)的方法,子類(lèi)可以自定義新的方法或者成員變量,,比如學(xué)生類(lèi)可以繼承用戶(hù)類(lèi),。 在繼承中基類(lèi)的構(gòu)造方法不會(huì)被自動(dòng)的調(diào)用,它需要再其派生類(lèi)的構(gòu)造中專(zhuān)門(mén)進(jìn)行調(diào)用,,所以要重寫(xiě)構(gòu)造方法 在調(diào)用基類(lèi)的方法時(shí)需要加上基類(lèi)的類(lèi)名前綴,,且需要帶上self參數(shù)變量 它的子類(lèi)也可以定義新的成員變量 重寫(xiě)基類(lèi)中的方法,同上 注意: Python總是首先查找本類(lèi)(對(duì)應(yīng)的子類(lèi))中的方法,,如果不在派生類(lèi)中找到對(duì)應(yīng)的方法,,它才開(kāi)始到基類(lèi)中逐個(gè)查找。 (多重繼承,、嵌套繼承) 八,、Python類(lèi)私有屬性與方法 類(lèi)的私有屬性 __private_attrs:兩個(gè)下劃線(xiàn)開(kāi)頭,,聲明該屬性為私有,不能在類(lèi)地外部被使用或直接訪(fǎng)問(wèn),。在類(lèi)內(nèi)部的方法中使用時(shí)self.__private_attrs,。 類(lèi)的私有方法 __private_method:兩個(gè)下劃線(xiàn)開(kāi)頭,聲明該方法為私有方法,,不能在類(lèi)地外部調(diào)用,。在類(lèi)的內(nèi)部調(diào)用self.__private_methods python不允許實(shí)例訪(fǎng)問(wèn)私有化的屬性: 可以通過(guò)object.classname的方式來(lái)訪(fǎng)問(wèn)實(shí)例的私有屬性 print(n._Mycounter__screctCount) 九、Python實(shí)例方法,、類(lèi)方法,、靜態(tài)方法 實(shí)例方法,類(lèi)方法,,靜態(tài)方法都是通過(guò)實(shí)例或者類(lèi)調(diào)用,,只不過(guò)實(shí)例方法通過(guò)類(lèi)調(diào)用時(shí)需要傳遞實(shí)例的引用(python3可以傳遞任意對(duì)象,其他版本會(huì)報(bào)錯(cuò)) 實(shí)例方法針對(duì)的是實(shí)例,,第一個(gè)參數(shù)是self,,普通對(duì)象方法至少需要一個(gè)self參數(shù),代表類(lèi)對(duì)象實(shí)例,;類(lèi)方法針對(duì)的是類(lèi),,@classmethod它表示接下來(lái)是一個(gè)類(lèi)方法,類(lèi)方法的第一個(gè)參數(shù)cls,,它們都可以繼承和重新定義,;靜態(tài)方法用于作為程序中的共享資源,直接通過(guò)類(lèi)去調(diào)用,,不用實(shí)例化對(duì)象,,不需要self參數(shù),可以認(rèn)為是全局函數(shù),,@staticmethod它表示接下來(lái)的是一個(gè)靜態(tài)方法 |
|
來(lái)自: 黃鶴歸 > 《python的各類(lèi)語(yǔ)句》