Python 如何在初始化后使类的公共属性为只读?

Python 如何在初始化后使类的公共属性为只读?,python,class,exception,readonly,Python,Class,Exception,Readonly,例如: class Example: def __init__(self, value): self.value = value 我想让人们在初始化后不能更改self.value的内容。因此,如果有人尝试: >>> c = Example(1) >>> c.value = 2 我希望它提出一个错误,或干脆使它不可能 您可以使用: 请注意,带有的值仍然可以作为示例\u对象写入。\u value,但在属性名前加下划线是一种惯例,用于告诉

例如:

class Example:
    def __init__(self, value):
        self.value = value
我想让人们在初始化后不能更改
self.value
的内容。因此,如果有人尝试:

>>> c = Example(1)
>>> c.value = 2
我希望它提出一个错误,或干脆使它不可能

您可以使用:


请注意,带有的值仍然可以作为
示例\u对象写入。\u value
,但在属性名前加下划线是一种惯例,用于告诉其他开发人员此属性不是类公共API的一部分,不应使用。

为什么需要这样做?我想您需要重写示例类中的函数,但您不能这样做。你所做的任何事都可以改变。建议你克服它,做点别的事情。
class Example(object):
    def __init__(self, value):
        self._value = value

    @property
    def value(self):
        return self._value