一尘不染

python中的私有函数/变量实施

python

我看到很多执行“松散”私有变量/功能的python代码。他们将用一个下划线(例如_foo)声明函数/变量,然后仅在类/文件中使用它。他们不使用双下划线确实让我感到烦恼,因为最终,有人会从班级外部将此人称为“私人”成员。

是否有某种方法可以在单个下划线上强制执行隐私(不更改为双下划线)?谢谢!


阅读 265

收藏
2021-01-20

共1个答案

一尘不染

否。这就是python的理念:不要让编译器/解析器强制执行隐私,因为 想要 访问私有成员的开发人员无论如何都可以这样做(反射等)。这个想法告诉人们,
嘿,这不是公共API的一部分。 如果使用不当,可能会损坏东西或杀死猫。我也可能经常更改签名,因为它不是公共API的一部分,而且我不必在乎使用它的人

而且,实际上,您可以使用来从外部访问双下划线变量(方法同样适用)obj._ClassName__variableName。除此之外,除了mixin对象外,不鼓励使用双下划线-
您永远无法知道是否有人想对您的类进行子类化。

2021-01-20