python property函数
时间: 2023-06-14 11:08:23 浏览: 169
在 Python 中,property 函数是一种特殊的函数,它可以让我们使用类的属性像访问实例变量一样访问。
property 函数是用来将访问类的属性的过程中的读取操作(getter)和写入操作(setter)转化为方法调用的。这样做的好处是可以对属性的读取和写入操作进行更加灵活的控制,例如可以限制属性的取值范围、在属性取值时自动计算其值等。
property 函数的语法如下:
```python
property(fget=None, fset=None, fdel=None, doc=None)
```
其中,fget 是获取属性值的方法,fset 是设置属性值的方法,fdel 是删除属性值的方法,doc 是属性的文档字符串。
以下是一个使用 property 函数的例子:
```python
class Rectangle:
def __init__(self, width, height):
self._width = width
self._height = height
@property
def width(self):
print('Getting width...')
return self._width
@width.setter
def width(self, value):
print('Setting width...')
self._width = value
@property
def height(self):
print('Getting height...')
return self._height
@height.setter
def height(self, value):
print('Setting height...')
self._height = value
@property
def area(self):
print('Calculating area...')
return self._width * self._height
```
在这个例子中,我们定义了一个名为 Rectangle 的类,其中包含了 width、height 和 area 三个属性。其中,width 和 height 属性是可读可写的,而 area 属性只是只读属性。
@property 和 @width.setter 装饰器分别用于定义 width 属性的读取方法和写入方法。同样,@property 和 @height.setter 装饰器分别用于定义 height 属性的读取方法和写入方法。
注意,在这个例子中,我们使用了下划线开头的变量名来表示属性的实际值,这是一种惯用的命名方式。这样做的好处是可以避免属性名和方法名重复,同时也可以避免在访问属性时出现无限递归的问题。
最后,我们还定义了一个名为 area 的只读属性,该属性会自动计算矩形的面积。
阅读全文