Python學習隨筆(六)

2021-10-10 09:34:38 字數 1809 閱讀 6206

物件導向程式設計(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...