property屬性
- 負責把一個方法當做屬性進行使用,這樣做可以簡化代碼。
1 裝飾器方式定義property屬性
-
表示把方法當做屬性使用, 表示當擷取屬性時會執行下面修飾的方法;@property
-
表示把方法當做屬性使用,表示當設定屬性時會執行下面修飾的方法;@方法名.setter
- 裝飾器方式的property屬性修飾的方法名一定要一樣。
class Student(object):
def __init__(self):
self.__age = 0
@property # 把age方法當做屬性使用, 當擷取屬性時會執行下面的方法
def age(self):
return self.__age
@age.setter # 把age方法當做屬性使用, 當設定屬性時會執行下面的方法
def age(self, new_age):
if new_age >= 100:
print("活到老學到老?Are you really?")
else:
self.__age = new_age
p = Student()
print(p.age)
p.age = 25
print(p.age)
p.age = 1000
===運作結果:==============================================================
0
25
活到老學到老?Are you really?
2 類屬性方式定義property屬性
類屬性 = property(擷取值方法名, 設定值方法名)
class Student(object):
def __init__(self):
self.__age = 0
def get_age(self): # 當擷取age屬性的時候會執行該方法
return self.__age
def set_age(self, new_age): # 當設定age屬性的時候會執行該方法
if new_age >= 100:
print("活到老學到老?Are you really?")
else:
self.__age = new_age
age = property(get_age, set_age) # 類屬性方式的property屬性
p = Student()
print(p.age)
p.age = 25
print(p.age)
p.age = 1000
===運作結果:==============================================================
0
25
活到老學到老?Are you really?