# @property 負責裝飾對象函數,讓其生成對應的setter和getter 函數
# 調用的時候,直接能夠使用對象名.函數名,調用python
''' 判斷輸入參數是否是想要的類型 普通的修改、添加屬性已經不能知足 建立類變量來判斷, @property ''' class People(object): def __init__(self,name,age): # 目的,執行age.setter函數,給_age屬性賦值age self.age = age self.name = name @property #@property 會將age函數聲明爲一個getter 函數,getter函數,通常用來得到數據得操做 #獲取數據 def age(self): return self._age # 修改屬性值 # 修改屬性值: 對象.函數名 = 參數值,來設置某些數據 @age.setter def age(self,value): if not isinstance(value,int): raise TypeError('value must be a int!') self._age = value if self._age < 18: self.is_ok = True print('未成年') else: self.is_ok = False print('成年人') @age.deleter #@age.deleter 裝飾器至關於給age 函數綁定一個刪除屬性的功能 def age(self): if hasattr(self,'_age'): #檢查是否擁有這屬性 del self._age else: print('沒有該屬性') p1 = People('張三',34) print(p1.name) # 經過調用@property,函數獲取屬性值,也能夠是私有屬性 print(p1.age) p1.age = 68 # 利用@age.setter類函數,判斷添加的時候參數類型 print(p1.age) del p1.age del p1.age