物件導向程式設計(object oriented programming)
oop把物件作為程式的基本單元,乙個物件包含了資料和運算元據的函式。
面向過程的程式設計把電腦程式視為一系列的命令集合,即一組函式的順序執行。
物件導向的程式設計把電腦程式視為一組物件的集合,而每個物件都可以接收其他物件發過來的訊息,並處理這些訊息,電腦程式的執行就是一系列訊息在各個物件之間傳遞。
類是抽象的模板,例項是根據類建立的具體物件
定義類(類名首字母大寫)
class 類名(object):
def __init__(self):
pass
方法的第乙個引數是self,self表示建立的例項本身,self不需要傳,python直譯器自己會把例項變數傳進去
建立例項
例項名 = 類名()
通過「.」呼叫屬性方法
python允許對例項變數繫結任何資料
封裝:
隱藏物件的屬性和實現細節,僅對外提供公共訪問方式。
私有變數: 在變數名前增加 __*** ,只有內部可以訪問,外部不能訪問
在python中,變數名類似__***__的,也就是以雙下劃線開頭,並且以雙下劃線結尾的,是特殊變數,可以直接訪問,不是private變數
以乙個下劃線開頭的例項變數名,是可以被訪問,但是請視為私有變數,不要隨意訪問
繼承:
子類可以獲得父類的全部屬性和方法
繼承類時要使用 super(子類名,self).__init__(子類需要繼承父類的引數) 去初始化父類。
多型:
類產生了多種的形態
子類的方法優先順序高於父類,子類可以覆蓋父類的同樣方法
動態語言呼叫例項方法時不檢查型別,只要方法存在,引數正確,就可以呼叫。這就是動態語言的「鴨子型別」
獲取物件資訊
type():返回對應的class型別,可以通過type()動態建立類物件
isinstance():判斷的是乙個物件是否是該型別本身,或者位於該型別的父繼承鏈上。
dir():獲得乙個物件的所有屬性和方法
hasattr()、setattr()、getattr()
類屬性
類本身繫結屬性,在class中直接定義屬性
可以通過 類名.屬性名 呼叫
例項屬性
給例項繫結屬性,通過例項變數或者通過self變數繫結
相同名稱的例項屬性將遮蔽掉類屬性
__slots__
限制例項的屬性,定義的屬性僅對當前類例項起作用,對繼承的子類不起作用的,
若在子類中也定義__slots__,則子類例項允許定義的屬性就是自身的__slots__加上父類的__slots__。
@property
python內建的@property裝飾器就是負責把乙個方法變成屬性呼叫的,應用於對引數進行必要的檢查
多重繼承
class 類名(父類1, 父類2,…):
pass
enum 列舉類
精確地控制列舉型別,可以從enum派生出自定義類
@unique 裝飾器可以幫助我們檢查保證沒有重複值。
元類(metaclass)
根據metaclass建立出類
c 學習 隨筆六
1 通常來說的一條準則是,如沒有特殊情況,vector就是最好的容器使用方案。2 對於string型別而言,有兩個方法需要仔細考慮,is s 從輸入流is中讀取乙個以空白字元分隔的字串,寫入s geline is,s 從輸入流is中讀取一行字元,寫入s。3 對於關聯容器map和set 都是根據鍵值進...
python學習隨筆
初始學習 菜雞乙個 1 用python提取excel資料 data pd.read excel r c users limaoli desktop ybsj.xlsx 這加了乙個r data np.array data 把列表轉換為陣列,方便後面的提取 datamat data 0 3 這個提取的是...
Python 學習隨筆
1.20200421 print輸入respone不能換行的問題 import urllib.parse import urllib.request data bytes urllib.parse.urlencode encoding utf8 respone urllib.request.urlo...