擅长:python、mysql、java
<p>我觉得有一些深层次的困惑引发了这个问题。私人变量并不是为了让邪恶的“黑客”远离。他们与安全无关。他们在那里推广良好的编程实践,比如<a href="http://en.wikipedia.org/wiki/Coupling_%28computer_programming%29">maintaining low coupling</a>。在</p>
<p>如果一个“邪恶的程序员”可以访问你的源代码,他或她可以用它做任何他或她想做的事情。将变量称为“private”不会改变这一点。如果说邪恶的程序员试图破坏你在另一个系统上执行的程序。。。将变量称为“private”对您没有好处。它不会改变程序在内存中的存储和操作方式。它只是强制执行(以不必要的复杂方式IMO)<a href="http://en.wikipedia.org/wiki/Separation_of_concerns">separation of concerns</a>。在</p>
<p>另外,值得注意的是,在正常情况下,你不必经历所有这些恶作剧。。。在</p>
<pre><code>MyClass.__dict__ = {}
MyClass.__dict__.__setitem__('_MyClass__protectedVariable','...but it is not')
</code></pre>
<p>…分配给受保护的变量。您甚至不必重写<code>__dict__</code>。你可以这样做:</p>
^{pr2}$
<p>因为它真的不是。我是说受到保护。名称损坏的主要目的是防止<a href="http://docs.python.org/tutorial/classes.html#private-variables">namespace collisions</a>。如果只需要一个“private”属性,只需在其前面加上一个下划线。期待你的用户尊重惯例,并期待你的虐待者打破它无论你做什么。在</p>