Python基礎(chǔ)019--靜態(tài)方法、類方法和類屬性

靜態(tài)方法追城、類方法和類屬性

  • 實(shí)例方法
    • 語(yǔ)法:必須有一個(gè)參數(shù),這個(gè)參數(shù)表示當(dāng)前實(shí)例對(duì)象,一般是self
    • 調(diào)用:只能通過(guò)實(shí)例對(duì)象調(diào)用
  • 類方法
    • 語(yǔ)法:必須有一個(gè)參數(shù),這個(gè)參數(shù)表示當(dāng)前類對(duì)象,一般是cls,在方法的頭部加注釋(裝飾器)@classmethod
    • 調(diào)用:實(shí)例對(duì)象可以調(diào)用汰现,類對(duì)象也可以調(diào)用
  • 靜態(tài)方法
    • 語(yǔ)法:普通函數(shù)的格式,不需要強(qiáng)制的要求傳遞參數(shù),在方法的頭部加上注釋@staticmethod;一般用于與實(shí)例對(duì)象,類對(duì)象無(wú)關(guān)的內(nèi)容
  • 實(shí)例方法掏觉、類方法、靜態(tài)方法都可以通過(guò)實(shí)例或者類調(diào)用值漫,只不過(guò)實(shí)例方法通過(guò)類調(diào)用時(shí)需要傳遞實(shí)例的引用
In [43]: class Test(object):
    ...:     def instancefun(self):                     # 實(shí)例方法
    ...:         print('instancefun')
    ...:         print(self)
    ...:     @classmethod
    ...:     def classfun(cls):                         # 類方法
    ...:         print('classfun')
    ...:         print(cls)
    ...:     @staticmethod
    ...:     def staticfun():                           # 靜態(tài)方法
    ...:         print('staticfun')
    ...:     def function():                            # 普通函數(shù)
    ...:         print('func')
    ...:         
    In [44]: t = Test()                                 # 實(shí)例化一個(gè)的對(duì)象
    In [45]: t.instancefun()
    instancefun
    <__main__.Test object at 0x7f99fc879510>
    In [46]: Test.classfun()                            # 類調(diào)用類方法
    classfun
    <class '__main__.Test'>
    In [47]: t.classfun()                               # 對(duì)象調(diào)用類方法
    classfun
    <class '__main__.Test'>
    In [48]: Test.staticfun()                           # 類調(diào)用靜態(tài)方法
    staticfun
    In [49]: t.staticfun()                              # 對(duì)象調(diào)用靜態(tài)方法                          
    staticfun
    In [50]: Test.instancefun(t)                        # 類調(diào)用實(shí)例方法需要傳遞參數(shù)
    instancefun
    <__main__.Test object at 0x7f99fc879510>
    
  • 實(shí)例屬性
    • 實(shí)例屬性是對(duì)象持有的澳腹,不是共享的屬性
    • 實(shí)例屬性只有對(duì)象能夠訪問(wèn)
  • 類屬性
    • 定義在類內(nèi)部,方法的外部的屬性就是類屬性
    • 在類的外部,通過(guò)類對(duì)象.屬性就是類屬性
  • 實(shí)例屬性和類屬性的區(qū)別
    • 類屬性歸所有的實(shí)例對(duì)象共享遵湖,可以通過(guò)類名訪問(wèn),也可以通過(guò)實(shí)例來(lái)訪問(wèn)
    • 實(shí)例屬性歸具體某個(gè)實(shí)例對(duì)象所有晚吞,只能通過(guò)實(shí)例對(duì)象訪問(wèn)
# 類屬性
In [55]: class Person(object):
    ...:     num = 100 
    ...:     def __init__(self):
    ...:         self.name = "zzz"
    ...:     def func(self):
    ...:         self.age = 100
    ...:         

In [56]: p1 = Person()
In [57]: p1.name = "aaa"                        # 通過(guò)實(shí)例化對(duì)象修改屬性延旧,發(fā)現(xiàn)屬性并沒(méi)有修改
In [58]: p2 = Person()
In [59]: print(p1.name)
aaa
In [60]: print(p2.name)
zzz
In [61]: Person.num = 200                       # 通過(guò)類對(duì)象修改屬性,發(fā)現(xiàn)屬性修改了
In [62]: print(p1.num)
200
In [63]: print(p2.num)
200

  • 如果需要在類外修改屬性槽地,必須通過(guò)類對(duì)象去引用然后進(jìn)行修改迁沫;如果通過(guò)實(shí)例對(duì)象去引用,會(huì)產(chǎn)生一個(gè)同名的實(shí)例屬性捌蚊,這種方式修改的是實(shí)例屬性集畅,不會(huì)影響到類屬性,并且之后如果通過(guò)實(shí)例對(duì)象去引用 該名稱的屬性缅糟,實(shí)例屬性會(huì)強(qiáng)制屏蔽掉類屬性挺智,即引用的是實(shí)例屬性,除非刪除該實(shí)例屬性窗宦;
  • 類中私有屬性
    • __private_attrs:兩個(gè)下劃線開(kāi)頭赦颇,聲明該屬性為私有,不能在類的外部被使用或直接訪問(wèn)
    • 在類內(nèi)部的方法中使用時(shí) self.__private_attrs
    • 訪問(wèn)私有屬性其格式是:對(duì)象._字段名赴涵;
      • eg:Test._Test__name或者a._Test__name
In [85]: class Test:
    ...:     __name = 'aaa'
    ...:     def a(self):
    ...:         print Test.__name
    ...:         

In [86]: a = Test()
In [87]: a.a()
aaa
In [88]: print Test.__name                          # 不能直接訪問(wèn)私有屬性
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-88-56cfd6a10fe4> in <module>()
----> 1 print Test.__name

AttributeError: class Test has no attribute '__name'

In [89]: print a._Test__name                        # 通過(guò)實(shí)例對(duì)象進(jìn)行訪問(wèn)/也可以通過(guò)類對(duì)象進(jìn)行訪問(wèn)
aaa
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末媒怯,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子髓窜,更是在濱河造成了極大的恐慌扇苞,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寄纵,死亡現(xiàn)場(chǎng)離奇詭異鳖敷,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)程拭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門哄陶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人哺壶,你說(shuō)我怎么就攤上這事屋吨。” “怎么了山宾?”我有些...
    開(kāi)封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵至扰,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我资锰,道長(zhǎng)敢课,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮直秆,結(jié)果婚禮上濒募,老公的妹妹穿的比我還像新娘。我一直安慰自己圾结,他們只是感情好瑰剃,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著筝野,像睡著了一般晌姚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上歇竟,一...
    開(kāi)封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天挥唠,我揣著相機(jī)與錄音,去河邊找鬼焕议。 笑死宝磨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的盅安。 我是一名探鬼主播懊烤,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼宽堆!你這毒婦竟也來(lái)了腌紧?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤畜隶,失蹤者是張志新(化名)和其女友劉穎壁肋,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體籽慢,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡浸遗,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了箱亿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片跛锌。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖届惋,靈堂內(nèi)的尸體忽然破棺而出髓帽,到底是詐尸還是另有隱情,我是刑警寧澤脑豹,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布郑藏,位于F島的核電站,受9級(jí)特大地震影響瘩欺,放射性物質(zhì)發(fā)生泄漏必盖。R本人自食惡果不足惜拌牲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望歌粥。 院中可真熱鬧塌忽,春花似錦、人聲如沸失驶。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)突勇。三九已至,卻和暖如春坷虑,著一層夾襖步出監(jiān)牢的瞬間甲馋,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工迄损, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留定躏,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓芹敌,卻偏偏與公主長(zhǎng)得像痊远,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子氏捞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

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