如果需要設(shè)置一個(gè)參數(shù),并且需要檢驗(yàn)妙痹,那么就可以使用函數(shù)來(lái)檢驗(yàn)
比如:
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中非常簡(jiǎn)單耿芹,有大神器裝飾器,@property,Python內(nèi)置的@property
裝飾器就是負(fù)責(zé)把一個(gè)方法變成屬性調(diào)用的.
把一個(gè)getter方法變成屬性猩系,只需要加上@property就可以了,此時(shí),@property本身又創(chuàng)建了另一個(gè)裝飾器@score.setter疗涉,負(fù)責(zé)把一個(gè)setter方法變成屬性賦值,于是绽淘,我們就擁有一個(gè)可控的屬性操作:
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)用在類(lèi)的定義中,可以讓調(diào)用者寫(xiě)出簡(jiǎn)短的代碼偏瓤,同時(shí)保證對(duì)參數(shù)進(jìn)行必要的檢查,這樣赔退,程序運(yùn)行時(shí)就減少了出錯(cuò)的可能性。