Python物件導向 屬性

2021-10-24 12:16:44 字數 1447 閱讀 9386

1、建立用於計算的屬性

1.1、說明

(1)在python中,可以通過@property(裝飾器)將乙個方法轉換為屬性,從而實現用於計算的屬性。

(2)把方法轉化為屬性後,可以直接通過方法名來訪問方法,而不需要再新增一對小括號(),讓**更加簡潔。

(3)通過@property(裝飾器)轉換後的屬性不能重新賦值,否則會丟擲異常。

1.2、格式

@property

def methodname(self):

block

引數說明:

methodname:用於指定方法名,一般使用寫字母開頭,該名稱最後將作為建立的屬性名。

self:必要引數,表示類的例項。

block:方法體,實現的具體功能。在方法體中,通常以return語句結束,用於返回計算結果。

1.3、案例

定義乙個矩形,在__init__()方法中定義兩個例項屬性,然後再定義乙個計算矩形面積的方法,並應用@property將其轉化為屬性,最後建立類的例項,並訪問轉換後的屬性。

**如下:

class rect:

def __init__(self,width,height):

self.width = width

self.height = height

@property #將方法轉為屬性

def area(self): #計算矩形面積的方法

return self.width*self.height #返回矩形的面積

rect = rect(800,600) #建立類的例項

print("面積為:",rect.area) #輸出屬性的值

輸出:480000

2、為屬性新增安全保護機制

2.1、說明

(1)在python中,預設的,建立的類屬性或例項時可以在類體外進行修改的,如果想要限制在體外不能修改,可以把它設定為私有的;設定為私有的後,在類體外也不能獲取它的值。

(2)如果要建立乙個可以讀取但不能修改的屬性,可以使用@property實現唯讀屬性。

(3)還可以為屬性設定***,即允許對屬性進行修改,但修改後需要遵守一定的約束。

2.2、案例

class tvshow: #定義電視節目類

def __init__(self,show):

self.__show = show

@property

def show(self):

return self.__show #返回私有屬性值

print("預設:",tvshow.show) #獲取屬性值

輸出:通過上面的方法建立的show屬性是唯讀的,嘗試修改屬性的值,再重新獲取,則會丟擲異常,**如下:

print("修改後:",tvshow.show) #獲取屬性值

python物件導向的屬性

如果乙個物件在建立的時候,需要有物件的屬性 那麼,我們應該在init方法中進行初始化 初始化操作主要的處理是 物件.屬性 值問題,值從 來?類在進行例項化時,往類名後面的括號中,傳遞資料 t cat 湯姆 通過這種方式傳參 物件 類名 引數 引數會傳送到init方法中,按照位置對應的關係進行給值 初...

Python物件導向之屬性

任務 定義乙個 dog 類,在類中定義屬性 name 和 age 在類外部可以修改該 name 和 age 的值,值通過 input 獲取。請在下面的begin end之間按照注釋中給出的提示編寫正確的 begin class dog 第一步 定義屬性 definit self,name,age s...

python物件導向之屬性

property是一種特殊的屬性,訪問它時會執行一段功能 函式 然後返回值 class person def init self,name,height,weight self.name name self.height height self.weight weight property 裝飾,將...