我在使用Python的过程中,突然发现一个有意思的方法,即Python的内置函数——property()方法
首先,property() 函数的作用是在新式类中返回属性值。其语法如下:
class property([fget[, fset[, fdel[, doc]]]])
参数的意思:
- fget – 获取属性值的函数
- fset – 设置属性值的函数
- fdel – 删除属性值函数
- doc – 属性描述信息
一般常用的就是前面两个参数。那么接下来我们就用实例来说明property()方法如何使用吧。
class Demo(object):
def __init__(self):
self.__x = 0
def get_x(self):
return self.__x
def set_x(self, value):
self.__x = value
首先对于如上的类,通常我们的使用方法都是:
demo = Demo()
demo.set_x(2)
print(demo.get_x())
如上代码显得有点长,也有点不太友好,因此为了简化操作,便有了property()。有了它之后,我们的操作如下:
class Demo(object):
def __init__(self):
self.__x = 0
def get_x(self):
return self.__x
def set_x(self, value):
self.__x = value
X = property(get_x, set_x)
if __name__ == "__main__":
demo = Demo()
demo.X = 2
print(demo.X)
可以看到,原本的私有属性__x只能通过getter()和setter()方法进行使用,但是有了property()方法之后,私有属性就相当于公有属性了,既方便了我们的使用,也保证了属性的安全性。
当然,我们还有另一种使用方法:
class Demo(object):
def __init__(self):
self.__x = 0
@property
def get_x(self):
return self.__x
def set_x(self, value):
self.__x = value
if __name__ == "__main__":
demo = Demo()
demo.x = 2
print(demo.x)
如上,将property()方法用作装饰器可以很方便的创建只读属性,一般就是用来装饰getter()函数的
|