@property可以把一个方法装饰成一个属性来使用的, 这是它的语法含义。具体用途呢, 比如,我们存储一个人的信息的时候,,可以存储: 名字、 生日、性别.。
那这个时候,,我想要一个人的年龄怎么办? 需要计算对不对? 此时就可以用@property了
@property的语法格式如下
@propertydef 方法名(self):代码块
class Person:def __init__(self, name, birthday, gender):self.name = nameself.birthday = datetime.datetime.strptime(birthday, "%Y-%m-%d")self.gender = gender@property # 这么做的好处就是用的时候会方便很多.def age(self):return datetime.datetime.now().year - self.birthday.year # 年龄 (这里只是简单计算年差. 不考虑月份)p1 = Person("张无忌", "1337-05-06", "男")p2 = Person("周芷若", "1339-05-06", "女")print(p1.age) # 683print(p2.age) # 681
说的直白一些, 就是某些属性必须要经过计算才能得到。但是呢,弄成方法又不太舒服,就可以考虑这种@property的形式了。
作者:会写程序的樵夫
链接:https://www.zhihu.com/question/430848317/answer/1583882050
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
