類是什麼?
官方定義
類提供了一種組合資料和功能的方法。建立一個新類意味著建立一個新的物件 型別,從而允許建立一個該型別的新 例項 。每個類的例項可以擁有儲存自己狀態的屬性。一個類的例項也可以有改變自己狀態的(定義在類中的)方法。
簡單的說,類就是一個事物的抽象描述。所以類中可以包含描述類的方法和屬性,其中方法又分為普通方法,類方法,靜態方法。詳細區別可檢視Python的@staticmethod和@classmethod的作用與區別,今天主要介紹普通方法。
定義方式:(類似函式的定義),用class來標識。
就像這樣:
class ClassName: <statements> def funs(self, arg): # self is the instance of class <fun statements> @classmethod def clsFuns(cls, arg): # cls is the class <statements> @staticmethod def staticFun(arg): # 與普通函式類似 <statements>
類怎麼用?需求:我們需要封裝一個通用的類來描述男人和女人。
class Man(object): def __init__(self): print("it is man class...") def canPregnant(self): print("nonono...man can't pregnant...") def haveBeard(self): print("yep...")class Woman(object): def __init__(self): print("it is woman class...") def canPregnant(self): print("yep...woman can pregnant...") def haveBeard(self): print("nonono...")
定義的男人和女人類都描述了其能否懷孕,是否長鬍子。
類的使用:
boy=Man() # 例項化一個男孩girl=Woman() # 例項化一個女孩boy.canPregnant() # 男孩是否可以懷孕?girl.canPregnant() # 女孩是否可以懷孕?# 輸出➜ test git:(master) ✗ python3 test.pyit is man class...it is woman class...nonono...man can't pregnant...yep...woman can pregnant...
類的變數與可訪問性變數(屬性)分類:
類變數:直接定義在類中,為所有類物件共享;透過類名訪問clsName.var;例項變數:每個例項獨有的資料(在__init__方法中定義、初始化);透過例項物件訪問inst.var;Python中的可訪問性是透過約定來實現的:
私有屬性:以兩個下劃線開始的,__var;保護屬性:以一個下劃線開始的,_var;只能自身與子類可訪問;普通屬性:以字母等開始的。類的專有方法Python透過約定一些專有的方法來增強類的功能:
__init__:建構函式,在生成物件時呼叫(例項變數也在此函式中定義);__del__:解構函式,釋放物件時使用;__repr__:列印(若有__str__,則先嚐試str),轉換;__setitem__:按照索引賦值;__getitem__:按照索引取值;__len__:獲取長度,內建函式len()使用;__cmp__:比較運算;__call__:函式呼叫(物件看作一個運算元);__add__:加運算;__sub__:減運算;__mul__:乘運算;__div__:除運算;__mod__:求餘運算;__pow__:乘方運算;repr與str:repr()與str()為內建函式,對應類中的__repr__與__str__來處理字串:
最新評論