擅长:python、mysql、java
<p>可以在名称中使用前导下划线来告诉代码的读者,所讨论的名称是一个内部细节,在将来的版本中不能依赖它。这样的约定真的就是你所需要的——为什么要用一种强制执行机制来衡量这种语言呢?在</p>
<p>与方法一样,如果数据是类设计的API的一部分,那么它们应该是公共的(命名时没有前导下划线),并且您打算继续支持这些API。在C++或java中,这是不可能发生的,因为如果你想把数据成员更改为访问器方法,那么你就不走运了,你必须打破API,并且每个类的客户端都必须改变。在</p>
<p>在Python和其他支持类似<code>property</code>结构的语言中,情况并非如此——您始终可以用透明地调用访问器方法的属性替换数据成员,API不会更改,客户端代码也不会更改。因此,在Python和其他具有类似<code>property</code>结构的语言中(我相信.NET语言是这样的,在源代码级别,尽管不一定是字节码级别),当数据是API的一部分并且当前不需要访问器时,您也可以将数据公开(如果需要,您可以随时将访问器方法添加到以后的实现版本中)不会破坏API)。在</p>
<p>所以这并不是一个一般的OO问题,而是特定于语言的问题:给定的语言是否支持类似属性的构造。Python会的。在</p>