Python中的对象与应用实践
1. Python对象的访问控制
在许多面向对象的编程语言中,存在访问控制的概念,它与抽象相关。对象的属性和方法通常分为私有(private)、受保护(protected)和公共(public)三种。私有属性和方法只有对象自身可以访问;受保护的属性和方法只有该类及其子类可以访问;公共属性和方法则可以被任何其他对象访问。
然而,Python并不采用这种严格的访问控制方式。Python更倾向于提供非强制性的指导原则和最佳实践,从技术上讲,类的所有方法和属性都是公开可用的。
- 单下划线前缀 :如果我们希望表明某个方法不应该被公开使用,可以在文档字符串(docstrings)中注明该方法仅供内部使用,同时按照惯例,在属性或方法名前加一个下划线
_
。Python程序员会将其理解为“这是一个内部变量,直接访问前要三思”,但解释器并不会阻止他们访问。例如:
class MyClass:
def __init__(self):
self._internal_variable = 10
def _internal_method(self):
return self._internal_variable
- 双下划线前缀 :若要强烈建议外部对象不要访问某个属性或方法,可以在其名称前加双下划线
__
。这会对该属性进行名称修饰(na