📅  最后修改于: 2023-12-03 15:19:00.460000             🧑  作者: Mango
在Python编程中,setter,getter和deleter是用于访问和修改对象属性的重要函数。这些函数允许程序员对属性进行限制,确保它们的值符合对象的需求。
Setter是一个用于设置对象属性的函数。Setter通常用于限制属性的值。例如,在下面的代码示例中,我们创建一个Person类,该类有一个名为age的属性。我们使用setter将年龄限制为介于0和100之间的数字。
class Person:
def __init__(self, age):
self._age = age
@property
def age(self):
return self._age
@age.setter
def age(self, age):
if age < 0:
self._age = 0
elif age > 100:
self._age = 100
else:
self._age = age
person = Person(25)
print person.age # 输出 25
person.age = -10
print person.age # 输出 0
person.age = 110
print person.age # 输出 100
person.age = 35
print person.age # 输出 35
在上面的代码中,我们定义了名为age的属性。我们使用@property装饰器定义了一个getter函数,用于获取属性值。然后我们使用@age.setter装饰器定义了一个setter函数,用于设置属性值。在setter函数中,我们添加了一些逻辑,确保属性值在0和100之间。
Getter是一个用于获取对象属性值的函数。Getter通常在访问属性时使用,它能够防止直接访问对象的属性, 从而增加了代码的复用性。例如,在下面的代码示例中,我们创建了一个Calculator类,该类有两个私有属性num1和num2。然后我们定义了一个名为result的属性,用于获取两个数的加法结果。
class Calculator:
def __init__(self, num1, num2):
self._num1 = num1
self._num2 = num2
@property
def result(self):
return self._num1 + self._num2
calculator = Calculator(10, 20)
print calculator.result # 输出 30
在上面的代码中,我们定义了一个名为result的属性。我们使用@property装饰器定义了一个getter函数,用于获取属性值。getter函数只是简单地返回num1和num2的求和结果。
Deleter是一个用于删除对象属性的函数。Deleter通常用于删除敏感信息,例如密码。例如,在下面的代码示例中,我们创建了一个User类,该类有一个私有属性password。我们使用deleter将password属性设置为None,从而删除了该属性。
class User:
def __init__(self):
self._password = None
@property
def password(self):
return self._password
@password.setter
def password(self, password):
self._password = password
@password.deleter
def password(self):
self._password = None
user = User()
user.password = 'my_password'
print user.password # 输出 'my_password'
del user.password
print user.password # 输出 None
在上面的代码中,我们定义了一个名为password的属性。我们使用@property装饰器定义了一个getter函数,用于获取属性值。我们使用@password.setter装饰器定义了一个setter函数,用于设置属性值。最后,我们使用@password.deleter装饰器定义了一个deleter函数,用于删除属性值。在deleter函数中,我们将属性的值设置为None。
总结:在Python编程中,setter,getter和deleter是用于访问和修改对象属性的重要函数。这些函数有助于保证程序的正确性和安全性。通过使用这些函数,程序员可以更好地管理属性,并防止属性值不合法或泄露敏感信息。