Python的類,複雜嗎

是菜鳥學python的第38篇原創文章

閱讀本文大概需要6分鐘

  • 高級語言都有面對對象,Python也不例外,比起c++,java這些傳統的語言,Python中的面對對象去掉了很多複雜的東西,理解和使用起來更簡單一些

  • 一般來說面對對象包含:數據封裝、繼承和多態這三大特點

  • Python的類我準備花4-5篇來仔細講講,今天我們先來了解一些最最最簡單基本的概念

要點:

1.類的定義和類的實例

2.類的初始化

3.類的刪除

4.類的屬性

5.類的方法

類的入門圖

1.類和類的實例

  • 類其實是一種數據結構,我們可以用它來定義對象,一個類會包含屬性和行為特性.類是現實世界抽象的實體以編程形式出現.

  • python中類的聲明用class關鍵字來命名。

  • python類分為兩種:經典類(舊類),新式類.新式類主要是從Python2.2以後開始引入的,目前主要以用新式類為主(Python 3.x中默認都是新式類)

也許同學會問為啥有新式類的出現(主要的差別在於類內置屬性,多重繼承的搜索順序和父類初始化)

2.類的初始化

  • 類的初始化函數是用__init__來完成的,也許有的同學有c++,java基礎的,覺得它和構造函數很像

  • 確實很像,注意注意注意__init__()不是類的構造函數,只是用來做初始化的

今天這篇只是揭露類的表層,等後面慢慢熟悉了之後,深入揭露類的本質的時候,我會告訴大家為什麼它不是構造函數,只是初始化函數

1).當Dog類聲明一個dog_obj對象實例的時候,Python會自動去檢查時候實現了__init__()方法,做一些實例對象的初始化工作,

2).有細心的小夥伴會問為啥這個__init__()函數長的這麼奇怪,要有雙下劃線開頭,哇你會搶答了,這個在Python中有特殊的含義.用來一些命名約定來進行訪問控制

3).又有同學會問self是啥,這個參數是Python特有的,當__init__()被調用的時候,實例對象作為第一個參數被傳遞了進去,相同於java裡面的this.也就是說self其實就是類的對象地址,啊哈你不信,好俺證明給你看

3.類的刪除

  • 類既然有初始化,就一定有刪除,有進就有出,python裡面用一個__del__()來負責清理類的對象,

  • 當這個對象沒有人用了就會被清理掉.有同學會問~~我怎麼知道什麼時候對象沒有人用了,聰明Python用引用計數的方法來追蹤

  • 引用一次加1,當引用計數為0的時候,python內置了一個垃圾對象回收機制,一旦計數為0就清理對象就會去調用類裡面的__del__()方法.是不是很智能,其實java也內置了這樣的功能。

  • 4.類的屬性

    • 類裡面定義

    • 類的初始化函數裡面定義

    1)先來說說類裡面定義,有一個Student類,裡面有name和age屬性

    class Student(object):

    tname=wang

    tage=10

    name,age都是Student類的屬性,所以Student的對象實例都共享name,age

    換句話說你的s1,s2兩個對象裡面的name,age都是一樣的,不信你看:

再來看看對象的屬性:

5.類中的方法

  • 實例方法

  • 類的方法

  • 類的靜態函數

類中的方法以及這3個方法之間的相互的調用關係比較複雜,它的設計思想跟java裡面很像,限於篇幅,我們在下一篇文章單獨對類的方法詳細講解.

最後說一下,原創真的不易,希望大家能夠給點支持,

也歡迎更多喜歡Python的同學關注 微信公眾號:菜鳥學python,一起來學python吧

閱讀原文


推薦閱讀:

TAG:Python | Python入门 |