@property可以把一个方法装饰成一个属性来使用的, 这是它的语法含义。具体用途呢, 比如,我们存储一个人的信息的时候,,可以存储: 名字、 生日、性别.。
那这个时候,,我想要一个人的年龄怎么办? 需要计算对不对? 此时就可以用@property
了
@property
的语法格式如下
@property
def 方法名(self):
代码块
class Person:
def __init__(self, name, birthday, gender):
self.name = name
self.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) # 683
print(p2.age) # 681
说的直白一些, 就是某些属性必须要经过计算才能得到。但是呢,弄成方法又不太舒服,就可以考虑这种@property
的形式了。
作者:会写程序的樵夫
链接:https://www.zhihu.com/question/430848317/answer/1583882050
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。