通常,Python代码会努力遵守统一访问原则。具体来说,公认的方法是:
foo.x += 1
即使代码可能确实在做:
foo.set_x(foo.get_x() + 1)
第一条语句无限地可读。但是,有了属性,您可以(在开始或以后)添加使用第二种方法获得的访问控制。
同样要注意,以单个下划线开头的实例变量 通常也是 私有的。也就是说,下划线向其他开发人员发出信号,表示您认为该值是私有的,他们不应直接与之混淆。但是,该语言中的任何内容都不能 阻止 他们直接对其进行弄乱。
如果使用双引号下划线(例如__x
),Python会对名称进行一些混淆。但是,仍然可以通过混淆的名称从类外部访问该变量。它不是真正的私人。只是有点…更不透明。还有反对使用双下划线的有效论点。一方面,它会使调试更加困难。