8.1 property 动态属性

from datetime import date

class User:
    def __init__(self, name, birthday):
        self.name = name
        self.birthday = birthday
        self._age = 0   # _ 一种编程规范

    @property
    def age(self):
        return date.today().year - self.birthday.year

    @age.setter
    def age(self, value):
        self._age = value

    def get_age(self):
        return self._age


if __name__ == '__main__':
    user = User('linda', date(1987, 11, 14))
    print(user.age)     # @property 用变量的方式去封装逻辑
    user.age = 100      # @age.setter 接收参数
    print(user.get_age())   # self._age 实例内部有存储的变量 _age
  • 对外展示 user.age; 内部存储 self._age
  • 动态属性 property 内部有更多的逻辑操作空间
  • user.age = 100 仔细体会内部处理过程