面試知識(shí)點(diǎn)之[Python類方法與變量]

類中定義的方法可以是:
  1. @classmethod 裝飾的類方法,第一個(gè)參數(shù)必須是cls署辉。使用場(chǎng)景:作為工廠方法創(chuàng)建實(shí)例對(duì)象碱鳞。
  2. 可以是 @staticmethod 裝飾的靜態(tài)方法,參數(shù)根據(jù)業(yè)務(wù)需求定,可有可無(wú)挎袜。
    使用場(chǎng)景:如果在方法中不需要訪問任何實(shí)例方法和屬性檐春,純粹地通過傳入?yún)?shù)并返回?cái)?shù)據(jù)的功能性方法逻淌,那么它就適合用靜態(tài)方法來(lái)定義,它節(jié)省了實(shí)例化對(duì)象的開銷成本疟暖,往往這種方法放在類外面的模塊層作為一個(gè)函數(shù)存在也是沒問題的卡儒,而放在類中,僅為這個(gè)類服務(wù)俐巴。(staticmethod相當(dāng)于定義了一個(gè)局部域函數(shù)為該類專門服務(wù))
  3. 用的最多的還是不帶裝飾器的實(shí)例方法骨望,第一個(gè)參數(shù)必須是 self
class A(object):
    def m1(self, n):
        print("self:", self)
@classmethod
    def m2(cls, n):
        print("cls:", cls)
@staticmethod
    def m3(n):
        pass
a = A()
a.m1(1) # self: <__main__.A object at 0x000001E596E41A90>
A.m2(1) # cls: <class '__main__.A'>
A.m3(1)
當(dāng)程序運(yùn)行時(shí):
? 第一步:代碼從第一行開始執(zhí)行 class 命令欣舵,此時(shí)會(huì)創(chuàng)建一個(gè)類 A 對(duì)象(沒錯(cuò)擎鸠,類也是對(duì)象,一切皆對(duì)象嘛)同時(shí)初始化類里面的屬性和方法缘圈,記住劣光,此刻實(shí)例對(duì)象還沒創(chuàng)建出來(lái)袜蚕。
? 第二、三步:接著執(zhí)行 a=A()绢涡,系統(tǒng)自動(dòng)調(diào)用類的構(gòu)造器牲剃,構(gòu)造出實(shí)例對(duì)象 a
? 第四步:接著調(diào)用 a.m1(1) ,m1 是實(shí)例方法垂寥,內(nèi)部會(huì)自動(dòng)把實(shí)例對(duì)象傳遞給 self 參數(shù)進(jìn)行綁定颠黎,也就是說(shuō), self 和 a 指向的都是同一個(gè)實(shí)例對(duì)象滞项。
第五步:調(diào)用A.m2(1)時(shí)狭归,python內(nèi)部隱式地把類對(duì)象傳遞給 cls 參數(shù),cls 和 A 都指向類對(duì)象文判。
Python中方法:
  1. 私有變量/方法: —> __xxx "雙下劃線 " 開始的成員變量叫做私有變量过椎。
    雙下劃線 " 開始的是私有成員,此類變量只有類對(duì)象自己能訪問戏仓,連子類對(duì)象也不能訪問到這個(gè)數(shù)據(jù)疚宇。

  2. 保護(hù)變量 —>_xxx "單下劃線 " 開始的成員變量叫做保護(hù)變量該類的實(shí)例和子類的實(shí)例能夠訪問保護(hù)變量赏殃。

  3. _ xxx_ 系統(tǒng)定義名字敷待,前后均有一個(gè)“雙下劃線” 代表python里特殊方法專用的標(biāo)識(shí),如 _ init _()代表類的構(gòu)造函數(shù)仁热。

在內(nèi)部榜揖,python使用一種 name mangling技術(shù),將 __membername替換成 _classname__membername抗蠢,也就是說(shuō)举哟,類的內(nèi)部定義中,所有以雙下劃線開始的名字都被"翻譯"成前面加上單下劃線和類名的形式

例如:為了保證不能在class之外訪問私有變量迅矛,Python會(huì)在類的內(nèi)部自動(dòng)的把我們定義的__spam私有變量的名字替換成為 _classname__spam(注意妨猩,classname前面是一個(gè)下劃線,spam前是兩個(gè)下劃線)秽褒,因此壶硅,用戶在外部訪問__spam的時(shí)候就會(huì)提示找不到相應(yīng)的變量。

在類的外部:_classname__spam 便可訪問該類的私有變量震嫉。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末森瘪,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子票堵,更是在濱河造成了極大的恐慌,老刑警劉巖逮栅,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件悴势,死亡現(xiàn)場(chǎng)離奇詭異窗宇,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)特纤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門军俊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人捧存,你說(shuō)我怎么就攤上這事粪躬。” “怎么了昔穴?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵镰官,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我吗货,道長(zhǎng)泳唠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任宙搬,我火速辦了婚禮笨腥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘勇垛。我一直安慰自己脖母,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布闲孤。 她就那樣靜靜地躺著谆级,像睡著了一般。 火紅的嫁衣襯著肌膚如雪崭放。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天建峭,我揣著相機(jī)與錄音亿蒸,去河邊找鬼掌桩。 笑死波岛,一個(gè)胖子當(dāng)著我的面吹牛则拷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播彻桃,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼邻眷,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼剔交!你這毒婦竟也來(lái)了抖拴?” 一聲冷哼從身側(cè)響起阿宅,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎往湿,沒想到半個(gè)月后领追,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绒窑,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了洼哎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谱净。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡郊丛,死狀恐怖厉熟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情揍瑟,我是刑警寧澤白翻,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站绢片,受9級(jí)特大地震影響滤馍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜底循,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一巢株、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧熙涤,春花似錦阁苞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至等舔,卻和暖如春骚灸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背软瞎。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工逢唤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人涤浇。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓鳖藕,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親只锭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子著恩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容