在Python中,我们可以通过在变量名或方法名前添加一个或两个下划线来改变其访问级别。这里有一些例子:
class MyClass:
def __init__(self):
self.public_var = "I'm public!"
self._protected_var = "I'm protected."
self.__private_var = "I'm private."
def public_method(self):
return "Public method"
def _protected_method(self):
return "Protected method"
def __private_method(self):
return "Private method"
# 创建一个类的实例
obj = MyClass()
# 访问公有变量
print(obj.public_var) # 输出: I'm public!
# 访问受保护的变量
print(obj._protected_var) # 输出: I'm protected.
# 访问私有变量
# print(obj.__private_var) # 这将引发AttributeError
# 但是,你可以通过名称改编来访问私有变量
print(obj._MyClass__private_var) # 输出: I'm private.
# 调用公有方法
print(obj.public_method()) # 输出: Public method
# 调用受保护的方法
print(obj._protected_method()) # 输出: Protected method
# 调用私有方法
# print(obj.__private_method()) # 这将引发AttributeError
# 但是,你可以通过名称改编来调用私有方法
print(obj._MyClass__private_method()) # 输出: Private method
这个例子展示了如何在Python中使用访问修饰符。请注意,Python并没有真正的私有访问修饰符,但是我们可以通过添加双下划线前缀来模拟私有行为。然而,这并不是真正的私有,因为我们仍然可以通过名称改编来访问这些变量和方法。这是Python的一个特性,它鼓励我们遵循“我们都是成年人”的原则,即我们应该负责任地使用和修改对象的状态,而不是依赖于语言来强制执行访问控制。