@property可以把一个方法装饰成一个属性来使用的, 这是它的语法含义。具体用途呢, 比如,我们存储一个人的信息的时候,,可以存储: 名字、 生日、性别.。

    那这个时候,,我想要一个人的年龄怎么办? 需要计算对不对? 此时就可以用@property

    @property的语法格式如下

    1. @property
    2. def 方法名(self):
    3. 代码块
    1. class Person:
    2. def __init__(self, name, birthday, gender):
    3. self.name = name
    4. self.birthday = datetime.datetime.strptime(birthday, "%Y-%m-%d")
    5. self.gender = gender
    6. @property # 这么做的好处就是用的时候会方便很多.
    7. def age(self):
    8. return datetime.datetime.now().year - self.birthday.year # 年龄 (这里只是简单计算年差. 不考虑月份)
    9. p1 = Person("张无忌", "1337-05-06", "男")
    10. p2 = Person("周芷若", "1339-05-06", "女")
    11. print(p1.age) # 683
    12. print(p2.age) # 681

    说的直白一些, 就是某些属性必须要经过计算才能得到。但是呢,弄成方法又不太舒服,就可以考虑这种@property的形式了。

    作者:会写程序的樵夫
    链接:https://www.zhihu.com/question/430848317/answer/1583882050
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。