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吧
閱讀原文
推薦閱讀: