📜  Python中的只读属性(1)

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

Python中的只读属性

在Python中,我们可以使用属性来控制对象的访问和修改。属性可以是读写属性,即可读可写的属性,也可以是只读属性,即只能读取不能修改的属性。

定义只读属性

在Python中定义只读属性,我们可以使用@property装饰器来实现。例如,我们定义一个Person类,其中age属性是只读属性,如下所示:

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

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

    @property
    def age(self):
        return self._age

Person类中,name属性和age属性都被定义为只读属性。name属性的值可以从外部读取,但不能修改;age属性的值既不能从外部修改也不能从外部读取。

如果我们尝试在Person类外部修改age属性的值,会得到一个AttributeError异常:

>>> p = Person('Alice', 18)
>>> p.age = 20
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: can't set attribute

如果我们尝试在Person类外部读取age属性的值,同样会得到一个AttributeError异常:

>>> p = Person('Alice', 18)
>>> print(p.age)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: can't get attribute
总结

只读属性是一种很有用的特性,可以有效地限制对对象的访问和修改。在Python中,我们可以使用@property装饰器来定义只读属性。使用只读属性可以提高程序的安全性和稳定性,防止程序中不必要的错误和异常。