描述符的三種定義方式

2021-10-05 23:04:22 字數 1613 閱讀 2256

什麼是描述符?

描述符是一種具有「**行為」的物件屬性。

訪問(獲取、設定和刪除)它的屬性時,實際是呼叫特殊的方法(get(),set(),delete())。

也就是說,如果乙個物件定義了這三種方法的任何一種,它就是乙個描述符。

描述符類的三種定義方式:

1.運用魔法方法,定義描述符類。

#self 描述符物件。instance被管理成員的類的物件。

#owner被管理成員的類。value 要設定的值。

class

studentmanage()

: __score =

none

def__get__

(self, instance, owner)

:return self.__score

def__set__

(self, instance, value)

: self.__score = value

def__delete__

(self, instance)

:del self.__score

class

student()

: score = scoremanage(

)

2.使用 property() 函式實現。

class

student()

: __score =

none

# 在需要被管理的類中 直接定義類似下面三個方法

defgetscore

(self)

:return self.__score

defsetscore

(self,value)

: self.__score = value

defdelscore

(self)

:del self.__score

score =

property

(getscore,setscore,delscore)

3.使用 @property 裝飾器語法實現。

class

student()

: __score =

none

@property

defscore

(self)

:#get

return self.__score

@score.setter

defscore

(self,value)

:#set

self.__score = value

@score.deleter

defscore

(self)

:#delete

del self.__score

呼叫方式

sd=student(

)sd.score=

100#賦值

print

(sd.score)

#獲取del sd.score #刪除

陣列定義的三種方式

陣列定義的三種方式 第一種 int a new int 5 a 0 10 第二種 int c new int 第三種 inti 錯誤的寫法 int i1 1,2,3,4 system.out.println arrays.tostring c 總之 具體的元素不能被 包裹。包裹的應該是陣列的數量。常...

陣列的三種定義方式

格式 陣列儲存的資料型別 陣列名字 new 陣列儲存的資料型別 長度 陣列定義格式詳解 和水杯道理相同,買了乙個 2公升的水杯,總容量就是 2公升,不能多也不能少。舉例 定義可以儲存 3個整數的陣列容器,如下 int arr new int 3 3.陣列的定義方式二 格式 陣列儲存的資料型別 陣列名...

定義函式的三種方式

定義函式時引數是函式體接收外部傳值的一種媒介,其實就是乙個變數名 在函式階段括號內沒有引數,稱為無參函式。需要注意的是 定義時無參,意味著呼叫時也無需傳入引數。如果函式體 邏輯不需要依賴外部傳入的值,必須得定義成無參函式。def func print hello nick func hello ni...