Python3 面向对象程序设计
生活随笔
收集整理的這篇文章主要介紹了
Python3 面向对象程序设计
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
類的定義
Python使用class關(guān)鍵字來(lái)定義類
class Car:def infor(self):print("This is a car") car = Car() car.infor()內(nèi)置方法isinstance()來(lái)測(cè)試一個(gè)對(duì)象是否為某個(gè)類的實(shí)例
self參數(shù)
- 類的 所有實(shí)例方法都有一個(gè)默認(rèn)的self參數(shù),并且必須是方法的第一個(gè)形參。但是不一定命名為self
- self參數(shù)代表將來(lái)要?jiǎng)?chuàng)建的對(duì)象(實(shí)例)本身
- 在內(nèi)部,訪問(wèn)實(shí)例屬性需要以self為前綴
- 在外部,通過(guò)對(duì)象名調(diào)用對(duì)象方法時(shí)并不需要傳遞這個(gè)參數(shù),如果在外部通過(guò)類名調(diào)用對(duì)象方法則需要顯示為self傳遞參數(shù)
類的成員和實(shí)例成員
- 類的成員:在類中所有方法定義之外定義的,通過(guò)類名或者對(duì)象名來(lái)訪問(wèn)
- 實(shí)例成員:一般是指在構(gòu)造函數(shù)__init__()中定義的(在其他函數(shù)中也可以,在外部定義也可以),在類內(nèi)部定義和使用時(shí)必須以self作為前綴,在類的外部必須通過(guò)對(duì)象名訪問(wèn)。我們可以同時(shí)擁有相同名字的類成員和實(shí)例成員。當(dāng)名字相同時(shí)根據(jù)訪問(wèn)方式的不同進(jìn)行區(qū)分
- 類成員是各個(gè)實(shí)例共享的,而實(shí)例成員不會(huì)共享
- 混入(mixin)機(jī)制:可以動(dòng)態(tài)地為類和對(duì)象增加成員,是Python動(dòng)態(tài)類型特點(diǎn)的重要體現(xiàn)
- 混入機(jī)制在大型項(xiàng)目開發(fā)中非常方便和實(shí)用
私有成員和公有成員
- 私有成員:以兩個(gè)下劃線__開頭
- 在類的外部不能直接訪問(wèn),需要通過(guò)對(duì)象的公有成員方法來(lái)訪問(wèn)
- 可以通過(guò)Python支持的特殊方式來(lái)訪問(wèn)
- 公有成員:既可以在類的內(nèi)部訪問(wèn),也可以在外部程序中使用
用下劃線作為變量名和方法名前綴和后綴表示類的特殊成員:
- _XXX受保護(hù)成員,不能用from module import *導(dǎo)入
- __XXX__系統(tǒng)定義的特殊成員
- __XXX私有成員,只有類對(duì)象自己能訪問(wèn),在對(duì)象外部可以使用對(duì)象名._類名_XXX這樣特殊的方式進(jìn)行訪問(wèn)
在IDLE環(huán)境中,在對(duì)象或者類名后面加上一個(gè)圓點(diǎn).稍等一秒鐘會(huì)自動(dòng)列出其所有公開成員,模塊也具有同樣的用法
在圓點(diǎn).后面再加一個(gè)下劃線則會(huì)列出該對(duì)象、類或者模塊的所有成員,包括私有成員
成員方法
- 公有方法、私有方法都屬于對(duì)象,私有方法的名字以兩個(gè)下劃線開始,每個(gè)對(duì)象都有自己的公有方法和私有方法,在這兩類方法中可以訪問(wèn)屬于類和成員的對(duì)象
- 公有方法通過(guò)對(duì)象名直接調(diào)用,私有方法不能直接調(diào)用,只能再屬于對(duì)象的方法中使用self調(diào)用或者使用特殊的方式
- 如果通過(guò)類名來(lái)調(diào)用屬于對(duì)象的公有方法,則需要顯式為該方法傳遞self參數(shù),用來(lái)指明訪問(wèn)哪個(gè)對(duì)象的數(shù)據(jù)成員
- 靜態(tài)方法和類方法都可以用過(guò)類名和對(duì)象名調(diào)用,但不能直接訪問(wèn)屬于對(duì)象的實(shí)例成員,只能訪問(wèn)屬于類的成員
- 一般將cls作為類方法的第一個(gè)參數(shù)名稱,但也可以用其他名字作為參數(shù),并且在調(diào)用類方法時(shí)不需要為該參數(shù)傳遞值
- 從類?法和實(shí)例?法以及靜態(tài)?法的定義形式就可以看出來(lái),類?法的第? 個(gè)參數(shù)是類對(duì)象cls,那么通過(guò)cls引?的必定是類對(duì)象的屬性和?法;?實(shí)例 ?法的第?個(gè)參數(shù)是實(shí)例對(duì)象self,那么通過(guò)self引?的可能是類屬性、也有 可能是實(shí)例屬性(這個(gè)需要具體分析),不過(guò)在存在相同名稱的類屬性和實(shí) 例屬性的情況下,實(shí)例屬性優(yōu)先級(jí)更?。靜態(tài)?法中不需要額外定義參數(shù), 因此在靜態(tài)?法中引?類屬性的話,必須通過(guò)類對(duì)象來(lái)引?
總結(jié)
以上是生活随笔為你收集整理的Python3 面向对象程序设计的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 成都大熊猫繁育基地能抱熊猫吗
- 下一篇: Python3小知识