Python3之裝飾器---特殊屬性@property
阿新 • • 發佈:2018-12-09
特殊屬性 @property
主要是實現其他語言所擁有的getter和setter功能
作用: 用來模擬一個屬性 通過@property裝飾器,可以對模擬屬性的賦值和取值加以控制
舉個簡單的栗子:
class Student:
def __init__(self, s):
self.__score = s
# 設定__score的值
def setScore(self, s):
if 0 <= s <= 100:
self.__score = s
# 得到__score的值
def getScore(self):
return self.__score
s = Student(50) # 建立一個例項物件
s.setScore(100) # 修改成績
print(s.getScore()) # 得到成績 100
以上是一個正常的寫法,經過加工後:
class Student:
def __init__(self, s):
self.__score = s
@property
def score(self):
print('getter被呼叫')
return self.__score
@score.setter
def score(self, s):
print('setter被呼叫')
if 0 <= s <= 100:
self.__score = s
s = Student(50)
# s.setScore(100)
s.score = 100
score = s.score
print('成績是{}'.format(score))
- 這兩個函式必須要同名 執行過程:
s.score = 100是設定,會呼叫@score.setter裝飾器的score函式 此時列印:setter被呼叫 score = s.score其中的s.score是呼叫,會呼叫@property裝飾的score函式, 列印:getter被呼叫,並將__score值返回,用score繫結 print(‘成績是{}’.format(score)) 列印的就是返回的score的值 100
本節完