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

时间:2011-04-05 22:18:52

标签: python

我看到很多python代码执行“松散”的私有变量/函数。它们将使用一个下划线(例如_foo)声明函数/变量,然后在类/文件中使用它。我真的很惹恼他们不使用双下划线,因为最终,有人会从课堂外称这个“私人”成员。

有没有办法在单个下划线上强制实施隐私(不改为双打)? 谢谢!

2 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:6)

在Python中,私有方法没有严格的概念(例如Java)。通过_classname__method仍然可以访问使用双下划线。

简而言之,不要违背细微之处,而应该遵循Python的理念,即私有是惯例,而不是力量。