📜  python setter getter deleter - Python (1)

📅  最后修改于: 2023-12-03 15:19:00.460000             🧑  作者: Mango

Python Setter Getter Deleter

在Python编程中,setter,getter和deleter是用于访问和修改对象属性的重要函数。这些函数允许程序员对属性进行限制,确保它们的值符合对象的需求。

Setter

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是一个用于获取对象属性值的函数。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是一个用于删除对象属性的函数。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是用于访问和修改对象属性的重要函数。这些函数有助于保证程序的正确性和安全性。通过使用这些函数,程序员可以更好地管理属性,并防止属性值不合法或泄露敏感信息。