【问题标题】:How can I make a public attribute for a class read only after initialization?如何使类的公共属性在初始化后只读?
【发布时间】:2014-04-12 08:28:16
【问题描述】:

例如:

class Example:
    def __init__(self, value):
        self.value = value

我想让它在初始化后人们无法更改 self.value 的内容。因此,如果有人尝试,它会引发异常:

>>> c = Example(1)
>>> c.value = 2

我希望它引发错误或干脆使它不可能。

【问题讨论】:

  • 为什么需要这样做?
  • 我猜你需要重写示例类中的setattr(object, name, value) 函数
  • 你不能。您所做的任何事情都可以解决。建议你克服它并做点别的事情。

标签: python class exception readonly


【解决方案1】:

您可以使用property

class Example(object):
    def __init__(self, value):
        self._value = value

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

请注意,example_object._value 的值仍可写,但在属性名称前添加下划线是一种约定,告诉其他开发人员该属性不是类公共 API 的一部分,不应使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-27
    • 2014-07-17
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多