十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
本文實(shí)例講述了Python 面向?qū)ο蟛糠种R(shí)點(diǎn)。分享給大家供大家參考,具體如下:
面向?qū)ο螅?/strong>
世間萬物,皆可分類。--------------------手機(jī)《--------------某一個(gè)分類
世間萬物,皆為對(duì)象。--------------------我的手機(jī)《---------有具體指向
只要是對(duì)象,就肯定屬于某種品類。
只要是對(duì)象,就肯定有屬性。
類的相同點(diǎn)一起寫,不同點(diǎn)分開寫。
1.Python類中self的來源:
通常函數(shù)的執(zhí)行方式為:
調(diào)用函數(shù)--》執(zhí)行函數(shù)----》返回該函數(shù)的執(zhí)行結(jié)果(得到一個(gè)內(nèi)存地址)
Python類中方法卻不是這樣執(zhí)行的,
而是在實(shí)例化對(duì)象的同時(shí)也將此時(shí)的對(duì)象名稱傳入。然后在類中__init__需要一個(gè)參數(shù)接受該對(duì)象,故選用self,self代表的是當(dāng)前對(duì)象的引用,指向的是同一塊內(nèi)存地址,所以不需要使用return返回值。
2.為什么類中的方法最少有一個(gè)self參數(shù)?
這是由于類中的方法是類內(nèi)部共存(共享)的,不像其他字段屬性每次都在內(nèi)存中復(fù)制得有,但是得知道每次調(diào)用該方法的對(duì)象是誰,需要將調(diào)用這個(gè)方法的對(duì)象傳遞到該方法中,故需要一個(gè)self接收該對(duì)象。在底層是通過----》類.方法(對(duì)象名)實(shí)現(xiàn)該過程的。最終的實(shí)現(xiàn)是誰調(diào)用這個(gè)方法,誰就把自己傳遞給該方法。 類名.方法名(類的對(duì)象)
r=Role(‘WFB') Role是一個(gè)類,類中有一個(gè)got_shot()方法。
r.got_shot()======》實(shí)質(zhì)為Role.got_shot(r)
3.在構(gòu)造函數(shù)中初始化:在內(nèi)存中開辟一塊空間,然后將一些值進(jìn)行存儲(chǔ)。對(duì)于沒有在構(gòu)造函數(shù)中初始化的方法是在類的內(nèi)存當(dāng)中的,而不是在實(shí)例的內(nèi)存空間里。
4.python 類變量和實(shí)例變量
類變量既可以通過實(shí)例也可以通過類來訪問,這是因?yàn)樵L問順序是默認(rèn)先訪問實(shí)例的,若實(shí)例中沒有則來訪問類的。
實(shí)例變量是可以增加的,也是可以刪除的,體現(xiàn)為:
4.1增加
4.1.1 在類初始化時(shí)是通過構(gòu)造函數(shù)__init__()中接收的self參數(shù)然后進(jìn)行賦值,如下
class Role: def __init__(self, name): #在實(shí)例化時(shí)做一些類的初始化的工作 self.name = name #實(shí)質(zhì)為r1.name=name實(shí)例變量(靜態(tài)屬性),作用域就是實(shí)例本身