Python中的私有函数/变量强制使用
我看到很多Python代码中使用了“松散”的私有变量和函数。他们会用一个下划线来声明函数或变量(比如说 _foo),然后只在这个类或文件里使用。这样让我很烦,因为他们不使用双下划线,最终总会有人从类外部调用这个“私有”的成员。
有没有什么方法可以强制让单下划线的私有性更严格一些(而不需要改成双下划线)?谢谢!
2 个回答
6
在Python中,没有像Java那样严格的私有方法的概念。即使你使用了双下划线,仍然可以通过 _classname__method
的方式访问这些方法。
简单来说,不要逆着Python的设计理念走,Python认为私有方法是一种约定,而不是强制的规则。
9
不可以。这就是Python的理念:不强制限制私有成员的访问,因为那些想要访问私有成员的开发者总有办法做到(比如反射等)。
这个理念的意思是告诉大家:嘿,这个不是公共接口的一部分。如果你不当使用,可能会导致程序出错,甚至搞坏你的猫。因为这不是公共接口的一部分,所以我可能会经常修改它的定义,而不需要担心有人在使用它。
顺便说一下,你其实可以通过 obj._ClassName__variableName
从外部访问双下划线变量(方法也是一样)。不过,除了在混合对象中,通常不建议使用双下划线,因为你永远不知道别人是否想要继承你的类。