python中的语法糖@property——python入门

一、setter、getter、@property

Python 中,settergetter 是用来控制属性访问的方法。setter 方法用于设置属性的值,getter 方法用于获取属性的值。使用 settergetter 方法可以控制属性的访问权限和格式。

为了方便使用settergetter 方法,Python 提供了一个语法糖,称为 @property。使用 @property 可以将一个方法转换为属性,从而使该属性可以像普通属性一样访问,同时也可以使用 setter 方法来设置属性的值。

下面是一个示例:

class Person:
    def __init__(self, name):
        self._name = name

    @property
    def name(self):
        return self._name

    @name.setter
    def name(self, value):
        if not isinstance(value, str):
            raise ValueError('Name must be a string')
        self._name = value

在上面的代码中,我们定义了一个 Person 类,该类包含一个名为 name 的属性。使用 @propertyname 方法转换为属性,从而使该属性可以像普通属性一样访问。同时,使用 @name.setter 装饰器定义了一个setter方法,用于设置 name 属性的值。在 setter 方法中,我们对属性值进行了类型检查,如果属性值不是字符串类型,则抛出一个 ValueError 异常。

现在,我们可以使用以下代码来访问 name 属性:

p = Person('Alice')
print(p.name)  # 输出 'Alice'
p.name = 'Bob'
print(p.name)  # 输出 'Bob'
p.name = 123   # 抛出 ValueError 异常

可以看到,我们可以像访问普通属性一样访问 name 属性,并且可以使用 setter 方法来设置属性的值。如果设置的值不是字符串类型,则会抛出一个异常。这样,我们就可以控制属性的访问权限和格式。

你可能感兴趣的:(python,python,开发语言)