顾名思义,@property就是一个跟属性相关的装饰器, 使用了它之后,取值和赋值操作都变得简洁

 

from datetime import date, datetime


class User:
    def __init__(self, name, birthday):
        self.name = name
        self.birthday = birthday
        self._age = 0

    # 相当于get操作
    @property
    def age(self):
        # return datetime.now().year - self.birthday.year
        return self._age

    # 相当于set操作
    @age.setter
    def age(self, value):
        self._age = value


if __name__ == '__main__':
    user = User('lucy', date(year=2000, month=1, day=2))
    print(user.age)  # 如果age方法上没有property装饰器,这样是不行的

    user.age = 66  # 赋值操作
    print(user.age)  # 66 取值操作
posted on 2019-12-14 22:58  显示账号  阅读(216)  评论(0编辑  收藏  举报