文章目錄
前言
此文章主要是記錄一下學習class類的使用、創建方法。
對象的定義
程序將數據和對數據的操作封裝在一起,組成一個相互依存、不可分割的整體,即對象。
Python中的一切內容都可以稱爲對象,例如數字、字符串、列表、元組、字典、集合、函數、類都是對象。
類的定義
對於相同類型的對象進行分類、抽象後,得出共同的特徵而形成了類。
子類
即在一個類A中嵌套另一個類B,則類B爲類A的子類,類A爲類B的父類。
其他數據的定義
示例代碼
init()構造函數
屬於類的數據成員(即類屬性)可以直接在類裏,且不在方法的位置定義。
屬於類中方法的數據成員(即實例屬性)一般是指在函數__init__()中定義的,定義和使用的時候需要以self作爲前綴。
類屬性
類屬性就是直接在類中進行定義的,相當於附屬於類的變量。
可以通過對象名.類屬性名
或是類名.類屬性名
對該數據成員進行調用
實例屬性
在類的方法中進行定義,相當於附屬於類的某個方法的變量
只能通過對象名.實例屬性名
進行調用。
注:在Python中可以動態地爲自定義類和對象增加或刪除成員。
私有成員
在定義類的成員時,如果成員名是以兩個下劃線(或兩個以上下劃線)開頭則表示是私有成員。
私有成員在類的外部不能直接訪問,需要通過調用對象的公開成員方法來訪問,即對象名.私有方法名
。
在對象外部可以通過對象名._類名__私有方法名
的特殊方式訪問。
下圖中的__pricate()即爲私有的成員,在類的
注: 若爲兩個下劃線開頭,並以兩個下劃線結尾的方法不是私有成員。
受保護成員
類似於私有成員,但是開頭僅有一個下劃線,且不能通過from module import *的方式導入到其他程序中
在類的外部不能直接訪問,需要通過調用對象的公開成員方法來訪問,即對象名.私有方法名
。
特殊成員
特殊成員是以兩個下劃線開頭,且以兩個下劃線結尾。是系統定義的成員。
公有成員
除了以上幾個成員外就是公有成員了。
公有成員可以在類的內部進行訪問,也可以在外部程序使用。
常用的特殊成員
構造函數:init()
創建對象時自動調用
析構函數:del()
釋放對象時自動調用
靜態方法:new()
類的靜態方法,用於確定是否要創建對象
其他
方法 | 介紹 |
---|---|
__add__() |
+ |
__sub__() |
- |
__mul__() |
* |
_truediv__() |
/ |
__floordiv__() |
// |
__mod__() |
% |
__pow__() |
** |
__iadd__() |
+= |
__isub__() |
-= |
__abs__() |
與內置函數abs()對應 |
__bool__() |
與內置函數bool()對應,要求該方法必須返回布爾值 |
__bytes__() |
與內置函數bytes()對應 |
__complex__() |
與內置函數complex()對應,要求該方法必須返回複數 |
__dir__() |
與內置函數dir()對應 |
__divmod__() |
與內置函數divmod()對應 |
__float__() |
與內置函數float()對應,要求該方法必須返回實數 |
__hash__() |
與內置函數hash()對應 |
__int__() |
與內置函數int()對應,要求該方法必須返回整數 |
__len__() |
與內置函數len()對應 |
__reversed__() |
與內置函數reversed()對應 |
__class__ |
返回對象所屬的類 |
__dict__ |
對象所包含的屬性與值的字典 |
__subclasses__() |
返回該類的所有子類 |