from datetime import date,datetime
class User:
def __init__(self,name,birthday):
self.name=name
self.birthday=birthday
self.age=0
def get_age(self):
return datetime.now().year-self.birthday.year
if __name__=="__main__":
user = User('cgy', date(year=1987, month=1, day=1))
user.age
應用案例:
我們之前在設計的時候用了一個age=0這個字段,但是在後期的時候我們在數據庫內將這個字段刪除了,因為這個字段不適合存於數據庫內,這個字段每年都會變動。
我們就把代碼中那條self.age=0給註釋掉了,但是我們在很多地方都用的user.age,我們如何讓user.age這個屬性依然能用呢?
這裡我們就得用到property了,加上@property這個屬性描述符,我們的方法就能像屬性一樣調用了所以叫屬性描述符!
快在你自己電腦上敲一下試試吧
from datetime import date,datetime
class User:
def __init__(self,name,birthday):
self.name=name
self.birthday=birthday
# self.age=0
# def get_age(self):
# return datetime.now().year-self.birthday.year
@property
def age(self):
return datetime.now().year-self.birthday.year
if __name__=="__main__":
user = User('cgy', date(year=1987, month=1, day=1))
user.age
這裡只有get,我們如何set我們的age呢?
from datetime import date,datetime
class User:
def __init__(self,name,birthday):
self.name=name
self.birthday=birthday
# self.age=0
# def get_age(self):
# return datetime.now().year-self.birthday.year
@property
def age(self):
return datetime.now().year-self.birthday.year
@age.setter
def age(self,value):
self._age=value
if __name__=="__main__":
user = User('cgy', date(year=1987, month=1, day=1))
user._age=38
print(user.age)
print(user._age)
輸出:
33
38
閱讀更多 北京科技碼農 的文章