類和對象

1牵素、基本使用

class MyClass(object):
    message = 'Hello Developer'

    def show(self):
        print(self.message)

def main():
    print(MyClass.message)

    MyClass.message = 'Hello mudy'#修改成員變量
    print(MyClass.message)

    inst = MyClass()#實例化一個MyClass的對象
    inst.show()

if __name__ == '__main__':
    main()
Hello Developer
Hello mudy
Hello mudy

  • 類名為MyClass
  • 該類中定義了一個成員變量message,并對其賦了初始值
  • 類中定義了成員函數(shù)show(self),注意類中的成員函數(shù)必須要帶參數(shù)self
  • 參數(shù)self是對象本身的引用,在成員函數(shù)體可以引用self參數(shù)獲得對象的信息

2、構(gòu)造函數(shù)
?構(gòu)造函數(shù)是一種特殊的類成員方法桅打,主要用來在創(chuàng)建對象時初始化對象,即為對象成員變量賦初始值氏仗。Python中的類構(gòu)造函數(shù)用__init__命名妖胀,為MyClass添加構(gòu)造函數(shù)方法杠输,并實例化一個對象。

class MyClass(object):
    message = 'Hello ,Developer'

    def show(self):
        print(self.message)

    def __init__(self):#構(gòu)造函數(shù)在MyClass被實例化時被Python解釋器自動調(diào)用歪玲,
        print('構(gòu)造函數(shù)被調(diào)用')

def main():
    inst = MyClass()
    inst.show()

if __name__=='__main__':
     main()
構(gòu)造函數(shù)被調(diào)用
Hello ,Developer
  • 默認參數(shù)

class MyClass:
    message = 'Hello Developer'

    def show(self):
        print(self.message)

    def __init__(self,name='mudy',age='18'):
        print('構(gòu)造函數(shù)被調(diào)用了迁央,參數(shù)是',name,' ',age)

def main():
    inst = MyClass()
    inst.show()

    inst2 = MyClass('huy')
    inst2.show()

    inst3 = MyClass('dabao','17')
    inst3.show()

    inst4 = MyClass(age='20')
    inst4.show()
if __name__ == '__main__':
    main()
構(gòu)造函數(shù)被調(diào)用了,參數(shù)是 mudy   18
Hello Developer
構(gòu)造函數(shù)被調(diào)用了滥崩,參數(shù)是 huy   18
Hello Developer
構(gòu)造函數(shù)被調(diào)用了岖圈,參數(shù)是 dabao   17
Hello Developer
構(gòu)造函數(shù)被調(diào)用了,參數(shù)是 mudy   20
Hello Developer

?注意:在構(gòu)造函數(shù)中不能有返回值
?在Python中不能定義多個構(gòu)造函數(shù)夭委,但可以通過為命名參數(shù)提供默認值的方式達到利用多種方式構(gòu)造對象的目的幅狮。

3、析構(gòu)函數(shù)

?析構(gòu)函數(shù)是構(gòu)造函數(shù)的反向函數(shù)株灸,在銷毀(釋放)對象時將調(diào)用它們。析構(gòu)函數(shù)往往用來做“清理善后”的工作擎值,例如數(shù)據(jù)庫鏈接對象可以在析構(gòu)函數(shù)中釋放對數(shù)據(jù)庫資源的占用慌烧。Python中為類定義析構(gòu)函數(shù)的方法是在類中定義一個名字為__del__的沒有返回值和參數(shù)的函數(shù)。
?與Java類似鸠儿,Python解釋器的堆中存儲著正在運行的應(yīng)用程序所建立的所有對象屹蚊,但是他們不需要程序代碼來顯示地釋放,因為Python解釋器會自動跟蹤他們的引用計數(shù)进每,并自動銷毀(同時調(diào)用析構(gòu)函數(shù))已經(jīng)沒有被任何變量引用的對象汹粤,在這種場景中,開發(fā)者并不知道對象的析構(gòu)函數(shù)何時會被調(diào)用田晚,同時Python提供了顯示銷毀對象的方法:使用del關(guān)鍵字嘱兼。

class MyClass(object):
    message = 'Hello Developer'

    def show(self):
        print(self.message)

    def __init__(self,name='mudy',age='18'):
        print('構(gòu)造函數(shù)被調(diào)用,參數(shù)是',name,age)

    def __del__(self):
        print('析構(gòu)函數(shù)被調(diào)用')
def main():
    inst = MyClass()
    inst.show()

    inst2 = MyClass('huy')
    inst2.show()

    del inst,inst2

    inst3 = MyClass('huy','18')
    inst3.show()
    del inst3
if __name__ == '__main__':
    main()
構(gòu)造函數(shù)被調(diào)用,參數(shù)是 mudy 18
Hello Developer
構(gòu)造函數(shù)被調(diào)用,參數(shù)是 huy 18
Hello Developer
析構(gòu)函數(shù)被調(diào)用
析構(gòu)函數(shù)被調(diào)用
構(gòu)造函數(shù)被調(diào)用,參數(shù)是 huy 18
Hello Developer
析構(gòu)函數(shù)被調(diào)用

如果不手動del,則輸出結(jié)果如下:

構(gòu)造函數(shù)被調(diào)用,參數(shù)是 mudy 18
Hello Developer
構(gòu)造函數(shù)被調(diào)用,參數(shù)是 huy 18
Hello Developer
構(gòu)造函數(shù)被調(diào)用,參數(shù)是 huy 18
Hello Developer
析構(gòu)函數(shù)被調(diào)用
析構(gòu)函數(shù)被調(diào)用
析構(gòu)函數(shù)被調(diào)用
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市贤徒,隨后出現(xiàn)的幾起案子芹壕,更是在濱河造成了極大的恐慌,老刑警劉巖接奈,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件踢涌,死亡現(xiàn)場離奇詭異,居然都是意外死亡序宦,警方通過查閱死者的電腦和手機睁壁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人潘明,你說我怎么就攤上這事糠惫。” “怎么了钉疫?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵硼讽,是天一觀的道長。 經(jīng)常有香客問我牲阁,道長固阁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任城菊,我火速辦了婚禮备燃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘凌唬。我一直安慰自己并齐,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布客税。 她就那樣靜靜地躺著况褪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪更耻。 梳的紋絲不亂的頭發(fā)上测垛,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機與錄音秧均,去河邊找鬼食侮。 笑死,一個胖子當(dāng)著我的面吹牛目胡,可吹牛的內(nèi)容都是我干的锯七。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼誉己,長吁一口氣:“原來是場噩夢啊……” “哼眉尸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起巫延,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤效五,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后炉峰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體畏妖,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年疼阔,在試婚紗的時候發(fā)現(xiàn)自己被綠了戒劫。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片半夷。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖迅细,靈堂內(nèi)的尸體忽然破棺而出巫橄,到底是詐尸還是另有隱情,我是刑警寧澤茵典,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布湘换,位于F島的核電站,受9級特大地震影響统阿,放射性物質(zhì)發(fā)生泄漏彩倚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一扶平、第九天 我趴在偏房一處隱蔽的房頂上張望帆离。 院中可真熱鬧,春花似錦结澄、人聲如沸哥谷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽们妥。三九已至,卻和暖如春赎瑰,著一層夾襖步出監(jiān)牢的瞬間王悍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工餐曼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鲜漩。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓源譬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親孕似。 傳聞我的和親對象是個殘疾皇子踩娘,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,452評論 2 348

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

  • 2.1 類的基礎(chǔ)知識2.2 構(gòu)造函數(shù)2.3 拷貝構(gòu)造函數(shù)2.4 析構(gòu)函數(shù)2.5 C++能自動產(chǎn)生成員函數(shù)2...
    笑笑學(xué)生閱讀 408評論 0 0
  • 類和對象 如果說對象是樓房,那么實例化就是建造樓房喉祭,類表示的就是建造圖紙养渴;對象的四大特征:抽象:抽象出具體事物的普...
    秋風(fēng)弄影閱讀 567評論 0 0
  • 類是一個重要的C#編程概念,它在一個單元內(nèi)定義了表示和行為泛烙。類提供了面向?qū)ο缶幊毯兔嫦蚪M件編程所需的語言支持理卑,是創(chuàng)...
    CarlDonitz閱讀 816評論 0 2
  • 在人世,恍若若夢蔽氨,在凡塵藐唠,聚散離合 有人說緣分是一種無法用語言描述的奇妙帆疟,相遇,相識宇立,相知踪宠,相守,每一境界單...
    天涼喝茶閱讀 892評論 1 1
  • 秦哲妈嘹,不知你現(xiàn)在睡覺了沒有柳琢? 你說你頭疼。我心疼润脸。 看吧柬脸,我就是生的賤。 我也不知道自己哪里來的這些執(zhí)念津函,不過真的...
    如果玻璃會說話z閱讀 208評論 0 0