property()函数是 Python 内置函数之一,用于创建属性;它允许将方法像属性一样访问。
函数语法
property(fget=None, fset=None, fdel=None, doc=None)
参数:
fget:获取属性值的函数;fset:设置属性值的函数;fdel:删除属性的函数;doc:属性的文档字符串。
property()函数返回一个属性对象,它可以被赋值给类的属性,这样访问该属性时,会自动调用fget、fset和fdel中的一个或多个函数,实现属性值的获取、设置和删除。
property() 函数示例
class Data:
def __init__(self,value):
self._private_value = value
def get_value(self):
return self._private_value
def set_value(self,value):
self._private_value = value
def del_value(self):
del self._private_value
x = property(get_value,set_value,del_value,"this is a description of x")
data = Data(123)
# 实际调用了data.get_value()
print(data.x) #输出 123
# 实际调用了data.set_value()
data.x = 1
print(data.x) #输出 1
# 实际调用了data.del_value()
del data.x
@property 装饰器
@property装饰器是一种特殊的函数,可以将方法转换成属性:
class Circle:
def __init__(self, radius):
self._radius = radius
@property
def radius(self):
return self._radius
@radius.setter
def radius(self, value):
if value < 0:
raise ValueError("Radius cannot be negative")
self._radius = value
@property
def area(self):
return 3.14 * self._radius ** 2
a = Circle(5)
print(a.area) #输出 78.5
a.radius = 10
print(a.area) #输出 314.0