類的封裝及裝飾器 property

2021-09-29 00:07:53 字數 1113 閱讀 6576

在python中,所有以「__」雙下劃線包起來的方法,都統稱為「magic method」,中文稱『魔術方法』,例如類的初始化方法init,python中所有的魔術方法均在官方文件中有相應描述。,魔術方法不需要自己呼叫。如:

從上面這段**中我們可以總結物件的建立流程(s1=student()):

1.建立了乙個變數s1(例項);

2.在記憶體中建立了乙個新的物件;

3.執行類中**塊的**(只會執行一次)(print(「開始執行類…」));

4.__init__方法執行。

__init__方法的第乙個引數永遠是self,表示建立的例項本身,因此,在__init__方法內部,就可以把各種屬性繫結到self,因為self就指向建立的例項本身。如:

self與s1指向的是同乙個位址,是乙個物件。

封裝是物件導向的三大特性之一(剩餘兩大特性分別是,繼承和多型,後續文章會再進行詳細說明),封裝指的是隱藏物件中一些不希望被外部訪問到的屬性或方法。

1.隱藏了屬性名,使呼叫者無法隨意修改物件當中的屬性,增加資料安全性;

2.增加了getter和setter方法,其中getter方法可以對傳入的引數進行檢查,避免傳入無效的引數;setter方法,可以對對屬性進行再設定。

注意:上例為物件的屬性使用雙下劃線開頭,__***, 雙下劃線開頭的屬性是物件的隱藏屬性,隱藏屬性只能在類的內部訪問,無法通過外部訪問,所以導致s1.__name此種方法無效,原因是python此時將屬性name更改為了_student__name,所以無法修改屬性值。

python內建的@property裝飾器就是負責把乙個方法變成屬性呼叫的。可以將get方法轉換為物件的屬性來直接呼叫。@property本身又建立了另乙個裝飾器@score.setter,負責把乙個setter方法變成屬性賦值。如:

詳解Python閉包,裝飾器及類裝飾器

在專案開發中,總會遇到在原 的基礎上新增額外的功能模組,原有的 也許是很久以前所寫,為了新增新功能的 塊,您一般還得重新熟悉源 稍微搞清楚一點它的邏輯,這無疑是一件特別頭疼的事情 今天我們介紹的python裝飾器就能夠很好的解決這類問題 閉包函式 閉包比較簡單,直接上 def sum num1 1 ...

詳解Python閉包,裝飾器及類裝飾器

在專案開發中,總會遇到在原 的基礎上新增額外的功能模組,原有的 也許是很久以前所寫,為了新增新功能的 塊,您一般還得重新熟悉源 稍微搞清楚一點它的邏輯,這無疑是一件特別頭疼的事情 今天我們介紹的python裝飾器就能夠很好的解決這類問題 閉包函式 閉包比較簡單,直接上 def sum num1 1 ...

函式裝飾器 類裝飾器

一 函式裝飾函式 defwrapfun func definner a,b print function name func.name r func a,b return r return inner wrapfun defmyadd a,b return a b print myadd 2,3 二...