📅  最后修改于: 2023-12-03 14:46:18.546000             🧑  作者: Mango
在面向对象的编程中,访问修饰符是用来控制类的属性和方法的访问权限的关键词。Python 中的访问修饰符主要分为 Public, Protected 和 Private 三种。
在 Python 中,如果遇到类成员没有使用任何的修饰符,那么它默认是公开访问的,也就是说任何人都可以访问它:
class MyClass:
def __init__(self):
self.my_public_attr = "Public attribute"
obj = MyClass()
print(obj.my_public_attr) # 输出 "Public attribute"
在 Python 中,如果需要定义受保护的成员,我们可以在成员名称前面添加一个下划线(_),它表示该成员受到类和子类的保护,不能被外部类访问:
class MyClass:
def __init__(self):
self._my_protected_attr = "Protected attribute"
class MyChildClass(MyClass):
def __init__(self):
super().__init__()
obj = MyChildClass()
print(obj._my_protected_attr) # 输出 "Protected attribute"
在 Python 中,如果需要定义私有成员,我们可以在成员名称前面添加两个下划线(__),它表示该成员只能在类内部使用,不能被任何外部访问:
class MyClass:
def __init__(self):
self.__my_private_attr = "Private attribute"
def __my_private_method(self):
print("Private method")
def my_public_method(self):
print("Public method")
self.__my_private_method()
obj = MyClass()
print(obj.my_public_method()) # 输出 "Public method" 和 "Private method"
print(obj.__my_private_attr) # 抛出 AttributeError: 'MyClass' object has no attribute '__my_private_attr'
print(obj.__my_private_method()) # 抛出 AttributeError: 'MyClass' object has no attribute '__my_private_method'
注意:Python 并不是严格的面向对象语言,它的访问修饰符只是一种约束,在编程时应该遵守,但当需要强制从外部访问类的成员时,我们也可以通过一些特殊的方式来实现。
以上就是 Python 中访问修饰符的用法和注意事项,希望对你有所帮助。