python - 常量实例变量?

标签 python properties instance setter instance-variables

我使用 @property 来确保对对象实例变量的更改在我需要的地方被方法包装。

当一个实例有一个逻辑上不应该改变的变量时怎么办?例如,如果我正在为进程创建一个类,则每个进程实例都应该有一个 PID 属性,该属性将经常被访问但不应更改。

处理试图修改该实例变量的人的最 Pythonic 方式是什么?

  • 只是相信用户不会尝试改变 他们不应该做的事?

  • 使用属性但提高 如果实例变量是异常 变了?

  • 还有别的吗?

最佳答案

在变量名前加上__,并创建只读属性,Python 会处理异常,并保护变量本身不被意外覆盖。

class foo(object):
    def __init__(self, bar):
        self.__bar = bar

    @property
    def bar(self):
        return self.__bar

f = foo('bar')
f.bar         # => bar
f.bar = 'baz' # AttributeError; would have to use f._foo__bar

关于python - 常量实例变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1527395/

相关文章:

python - 如何循环设置不同的变量到函数的输出?

python - 为什么 beta 分布的值在 [0, 1] 之外?

java - 在 Java 中从 xml 获取值到 .properties 文件

ruby-on-rails - Ruby on Rails : Initializing instance variables with helpers in view

python - NameError:调用类函数时未定义全局名称 'getAllElements'

python - 合并任意数量的列表字典

oop - Matlab 中的依赖可观察属性。它有效吗?

qt - 如何声明多个 QML 属性而不单独处理每个属性?

haskell - 在 Haskell 中将类型约束添加到实例声明的上下文中

python - 使用python进行非线性回归 - 更好地拟合这些数据的简单方法是什么?