如果需要設(shè)置一個參數(shù),并且需要檢驗,那么就可以使用函數(shù)來檢驗
比如:
class student:
get_score(self):
return self.score
set_score(self,s):
self.score = s
使用:
stu = student()
stu.set_score(99)
print stu.get_score()
這樣很麻煩,也不夠直觀。
在python中非常簡單,有大神器裝飾器,@property,Python內(nèi)置的@property
裝飾器就是負(fù)責(zé)把一個方法變成屬性調(diào)用的.
把一個getter方法變成屬性,只需要加上@property就可以了,此時,@property本身又創(chuàng)建了另一個裝飾器@score.setter,負(fù)責(zé)把一個setter方法變成屬性賦值,于是,我們就擁有一個可控的屬性操作:
class student:
@property
score(self):
return self.score
@score.setter
score(self,s)
self.score = s
使用:
stu = student()
stu.score = 99
print stu.score
這樣方便直觀很多吧!
小結(jié)
@property廣泛應(yīng)用在類的定義中,可以讓調(diào)用者寫出簡短的代碼,同時保證對參數(shù)進(jìn)行必要的檢查,這樣,程序運行時就減少了出錯的可能性。