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 裝飾,將...