摘要: Python的@property装饰器用来把一个类的方法变成类的属性调用。
(1)普通用法
用于设置类的读写属性,只读和只写属性。
class Student(object):
@property
def birth(self):
return self._birth
@birth.setter
def birth(self, value):
self._birth = value
@property
def age(self):
return 2018 - self._birth
上面的birth
是可读写属性,而age
就是一个只读属性,因为age
可以根据birth
和当前时间计算出来。
用法:
Me = Student()
Me.birth = 1992 #直接对 Me._birth赋值,不用写成 Me.birth(1992 )
print(Me.birth) #直接读取 Me._birth
print(Me.age ) #读取 Me._age赋值
Me.age =29 #出错,age不可写
(2)深入用法(编程常用)
用于耦合两个类的方法(即函数)
class Data(object):
def __init__(self,num1,num2):
self._age1=int(num1)
self._age2 = int(num2)
def age_add(self,num3):
return self._age1+self._age2+num3
class Person(object):
def __init__(self,data1,data2):
self._info=Data(data1,data2)
@property
def info(self):
return self._info
if __name__ == '__main__':
Me=Person(16.3,1.6)
age=Me.info.age_add(10) #Me.info实际上就是Me._info,是一个初始化了的Data类
print(age) #结果为27