Python property() 函数用于在 getter 和 setter 等其他方法的帮助下创建和管理类的属性。如果你不想显式使用 property() 函数,你可以使用它的 @property 装饰器。
在面向对象的编程语言(如 Python)中,getter 和 setter 用于数据封装。在这里,封装意味着捆绑属性和方法以限制它们的直接访问。
此方法是内置函数之一,不需要导入任何模块。
语法
以下是 Python property() 函数的语法 -
property(getter, setter, deleter, doc)
参数
Python property() 函数接受以下参数 -
- getter − 它表示用于获取属性值的 getter 方法。
- setter − 此参数表示用于设置属性值的 setter 方法。
- deleter − 此参数指定用于删除属性值的 deleter 方法。
- doc − 它指定一个包含属性的文档字符串的字符串。
返回值
Python property() 函数返回指定 getter、setter 和 deleter 的 property 属性。
property() 函数示例
练习以下示例来理解 Python 中 property() 函数的使用:
示例:使用 property() 函数
下面的代码演示了如何使用 property() 函数来获取、设置和删除给定类的属性属性。为此,我们创建了 getter、setter 和 deleter 方法。[延伸阅读: Python - 装饰器]
class Metal:
def __init__(self, metalName):
self._metalName = metalName
def get_metal(self):
print("Getting Metal Name")
return self._metalName
def set_metal(self, name):
print("Setting Metal Name to:" + name)
self._metalName = name
def del_metal(self):
print("Deleting Metal Name")
del self._metalName
metalName = property(get_metal, set_metal, del_metal)
metal = Metal("Gold")
print(metal.metalName)
metal.metalName = "Silver"
del metal.metalName
上述代码的输出如下 -
Getting Metal Name
Gold
Setting Metal Name to:Silver
Deleting Metal Name
Gold
Setting Metal Name to:Silver
Deleting Metal Name
示例:使用 @property 装饰器创建只读属性
以下示例显示了 Python property() 函数的基本用法。在这里,我们在 @property 装饰器的帮助下创建一个简单的只读属性。
class Flight:
def __init__(self, jetEngine):
self._jetEngine = jetEngine
@property
def jetEngine(self):
return self._jetEngine
myFlight = Flight(121)
print("Getting the attribute value of class:")
print(myFlight.jetEngine)
当我们运行上述程序时,它会产生以下结果——
Getting the attribute value of class:
121
121
示例:使用@property的 Getter & Setter 函数
如果我们不想显式调用 property() 函数,我们需要使用 @property 装饰器。在下面的代码中,我们将创建一个 getter 来获取属性,并添加一个 setter 函数来修改属性。
class Flight:
def __init__(self, model):
self._model = model
@property
def model(self):
return self._model
@model.setter
def model(self, modelVal):
if modelVal >= 0:
self._model = modelVal
else:
raise ValueError("Model value must be non-negative")
myFlight = Flight(1210012)
print("Setting the model number of Flight using setter:")
print(myFlight.model)
以下是上述代码的输出 -
Setting the model number of Flight using setter:
1210012
1210012