python - 防止在 Python 中访问 "private"属性

标签 python encapsulation private-members

一个类可以在多大程度上“保护”它的一个属性免受外部访问?

比如一个类,有一个常规的_secret属性,原始值很容易被访问到:

class Paranoid(object):
    def __init__(self):
        self._secret = 0

    def set(self, val):
        self._secret = val * 10

    def get(self):
        return self._secret / 10

p = Paranoid()
p.set(123)
print p.get() # 123
print p._secret # 1230, should be inaccessible

如何使访问_secret变得更加困难?

这没有实际应用,我只是好奇是否有新的方法让它更难访问(在 Python 的上下文中 - 所以忽略你可以,比如说,将调试器附加到 Python 进程的事实,并且检查内存)

最佳答案

您可能正在寻找 getters and setters .一种不太复杂的方法是使用 __secret,它将调用名称重整以将其转换为 _Paranoid__secret

但是,是的,我应该注意到 python 社区并不像某些语言那样真正重视隐私。或者俗话说 we're all consenting adults here .

关于python - 防止在 Python 中访问 "private"属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10502265/

相关文章:

ruby - 方法中临时变量的惯用 ruby

java - java封装的要点

java - 私有(private)成员(member)无法访问?

c++ - boost 互斥量和类成员访问

python - 如何使用 BigQuery Python API 附加查询结果

python - 将值插入 numpy 数组

Haskell 导出记录仅供读取访问

c++ - 我可以在不使用 friend 的情况下从类外访问私有(private)成员吗?

python - Airflow - 在 DockerOperator 中使用 run_id 作为卷名称

python - 在 python 的 dicom 包中使用 read_file 时的维度轴