首先我们定义一个Person类,这里多说一点在Python3.x中Person()与Person(object)是一样的,默认帮你加载了Object类
class Person():
def get_height(self):
return self._height
def set_height(self, value):
self._height = value
if __name__ == '__main__':
hhh = Person()
hhh.set_height(10)
print(hhh.get_height())
通常我们会像这样去设置和调用类中的某个属性,但是,上面的调用方法又略显复杂,这时候就是推荐@property的时候了,它既能检查参数,又可以用类似属性这样简单的方式来访问类的变量
@propertyPython内置的@property
装饰器作用就是把一个方法变成属性调用,如果我们想把一个getter(实在不知道怎么解释就用Java里的这个东西来说吧)方法变成属性,这时候只需要在def 定义函数之前加上一个@property
我们以引言部分的Person()
类为例,这时,@property
本身又为其创建了另一个装饰器@height.setter
,负责把一个setter方法变成属性赋值;
下面附上参考代码:
class Person():
@property
def height(self):
return self._height
@height.setter
def height(self, value):
self._height = value
if __name__ == '__main__':
hhh = Person()
hhh.height = 10
print(hhh.height)
在这个时候我们就能像调用属性一样去对height进行操作,这无疑是简单了许多
设置只读属性