python中的私有公共保护访问说明符

dee*_*ank 3 python private public name-mangling access-specifier

我们可以在python中模拟私有和受保护的访问说明符吗?

名字莽莽

例如:

__var=10
Run Code Online (Sandbox Code Playgroud)

可以模拟私有,但它可以通过对象轻松访问外部.

object._className__var
Run Code Online (Sandbox Code Playgroud)

那么有没有一种方法我们可以直接模拟或做python一个我不知道的解决方案?

Ant*_*ony 6

Python没有像您可能习惯的其他语言那样的强制访问控制.该语言的哲学是"我们都同意成年人".

按照惯例,私有属性以下划线为前缀,这是人们不应该直接使用它们的提示.但就是这样,惯例.如果要沙箱Python,则需要在单独的过程中执行此操作.

双下划线修改的目的是防止意外名称冲突,而不是强制访问控制.

  • 答案是你没有.您可以使用反射黑客来对其进行模拟,但您可以使用反射来轻松地绕过这些黑客.真正的问题是你想要实现什么? (2认同)