類和對象

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()#實(shí)例化一個(gè)MyClass的對象
    inst.show()

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

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

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

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

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

    def __init__(self):#構(gòu)造函數(shù)在MyClass被實(shí)例化時(shí)被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
  • 默認(rèn)參數(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è)構(gòu)造函數(shù),但可以通過為命名參數(shù)提供默認(rèn)值的方式達(dá)到利用多種方式構(gòu)造對象的目的。

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

?析構(gòu)函數(shù)是構(gòu)造函數(shù)的反向函數(shù),在銷毀(釋放)對象時(shí)將調(diào)用它們。析構(gòu)函數(shù)往往用來做“清理善后”的工作,例如數(shù)據(jù)庫鏈接對象可以在析構(gòu)函數(shù)中釋放對數(shù)據(jù)庫資源的占用。Python中為類定義析構(gòu)函數(shù)的方法是在類中定義一個(gè)名字為__del__的沒有返回值和參數(shù)的函數(shù)。
?與Java類似,Python解釋器的堆中存儲著正在運(yùn)行的應(yīng)用程序所建立的所有對象,但是他們不需要程序代碼來顯示地釋放,因?yàn)镻ython解釋器會自動跟蹤他們的引用計(jì)數(shù),并自動銷毀(同時(shí)調(diào)用析構(gòu)函數(shù))已經(jīng)沒有被任何變量引用的對象,在這種場景中,開發(fā)者并不知道對象的析構(gòu)函數(shù)何時(shí)會被調(diào)用,同時(shí)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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(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é)生閱讀 496評論 0 0
  • 類和對象 如果說對象是樓房,那么實(shí)例化就是建造樓房,類表示的就是建造圖紙;對象的四大特征:抽象:抽象出具體事物的普...
    秋風(fēng)弄影閱讀 879評論 0 0
  • 類是一個(gè)重要的C#編程概念,它在一個(gè)單元內(nèi)定義了表示和行為。類提供了面向?qū)ο缶幊毯兔嫦蚪M件編程所需的語言支持,是創(chuàng)...
    CarlDonitz閱讀 992評論 0 2
  • 在人世,恍若若夢,在凡塵,聚散離合 有人說緣分是一種無法用語言描述的奇妙,相遇,相識,相知,相守,每一境界單...
    天涼喝茶閱讀 1,092評論 1 1
  • 秦哲,不知你現(xiàn)在睡覺了沒有? 你說你頭疼。我心疼。 看吧,我就是生的賤。 我也不知道自己哪里來的這些執(zhí)念,不過真的...
    如果玻璃會說話z閱讀 279評論 0 0

友情鏈接更多精彩內(nèi)容