原始代码。
这里获取一个学生的年龄,我们定义get_age 方法。要获取年龄需要
student.get_age()
代码如下。
from datetime import date, datetime
class Students:
def __init__(self, name, birthday):
self.name = name
self.birthday = birthday
def get_age(self):
"""创建一个获取年龄的函数"""
age = datetime.now().year - self.birthday
return age
if __name__ == "__main__":
student = Students('Bob', date(year=1990, month=12, day=10))
print(student.get_age())
"""这里返回结果29"""
下面我们用 property改造一下。
from datetime import date, datetime
class Students:
def __init__(self, name, birthday):
self.name = name
self.birthday = birthday
self._age = 0
#def get_age(self):
#"""创建一个获取年龄的函数"""
#age = datetime.now().year - self.birthday.year
#return age
@property
def ages(self)
""" 这里可以存放我们的计算逻辑,从而动态绑定age属性"""
age = datetime.now().year - self.birthday
return age
@ages.setter
def ages(self, value):
self._age = value
def prints(self):
print(self.ages)
print(self._age)
if __name__ == "__main__":
student = Students('Bob', date(year=1990, month=12, day=10))
student.prints()
"""这里返回结果29,0。因为ages是经过我们的计算逻辑得到的,而self._age则是初始化的值,另外如果在外部对其赋值也是可以改变的,但是self.ages只取决于birthday的值。"""
理解不够深刻,先记录一下。