有沒有既能夠檢查引數,又可以用類似屬性這樣簡單的方式來訪問類的變數呢?
有!對於類的方法,裝飾器一樣起作用!python內建的@property裝飾器就是負責把乙個方法變成屬性呼叫的:
還記得裝飾器(decorator)可以給函式動態加上功能嗎?對於類的方法,裝飾器一樣起作用。python內建的@property
裝飾器就是負責把乙個方法變成屬性呼叫的:
class student(object):
@property
def score(self):
return self._score
@score.setter
def score(self, value):
if not isinstance(value, int):
raise valueerror('score must be an integer!')
if value < 0 or value > 100:
raise valueerror('score must between 0 ~ 100!')
self._score = value
還可以定義唯讀屬性,只定義getter方法,不定義setter方法就是乙個唯讀屬性:
class student(object):
@property
def birth(self):
return self._birth
@birth.setter
def birth(self, value):
self._birth = value
@property
def age(self):
return 2015 - self._birth
上面的birth
是可讀寫屬性,而age
就是乙個唯讀屬性,因為age
可以根據birth
和當前時間計算出來。
特別注意的一點:在類中呼叫屬性時,應當使用self._birth的格式,而不是self.birth
Vue中的計算屬性使用,動態賦值property
在使用vue時候,可能會發現乙個問題 我們不想在data中給某個property賦上固定的預設值,而是想賦值一些經過計算的property值,甚至使用到了其他property,第一時間可能會想到這麼寫,如下 錯誤示例 selectphotolabel this photolabels 0 text?...
Python入門 迭代的使用
對乙個集合,無論有無序,還可以依次取出集合的每乙個元素 集合 型別有序 list stuple str unicode 無序set 無序並且具有key value dict 迭代在python中,可以說就是for迴圈,但是迭代又與一般的下標訪問陣列不同,前者只關心迭代結果,不關心內部的實現 可取得索...
google 一 python使用入門
google 一 python使用入門 我在google申請了帳號,呵呵,想試試在那裡發布我新寫的簡單python應用。首先學習google的python入門文件 解開壓縮檔案,開啟裡面的readme,參考該文件安裝環境,我的作業系統是ubuntu9.10 解開壓縮後,將資料夾拷貝到工作目錄 1.撰...