📜  python 访问修饰符 - Python (1)

📅  最后修改于: 2023-12-03 14:46:18.546000             🧑  作者: Mango

Python 访问修饰符

在面向对象的编程中,访问修饰符是用来控制类的属性和方法的访问权限的关键词。Python 中的访问修饰符主要分为 Public, Protected 和 Private 三种。

Public 访问修饰符

在 Python 中,如果遇到类成员没有使用任何的修饰符,那么它默认是公开访问的,也就是说任何人都可以访问它:

class MyClass:
    def __init__(self):
        self.my_public_attr = "Public attribute"

obj = MyClass()
print(obj.my_public_attr) # 输出 "Public attribute"
Protected 访问修饰符

在 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"
Private 访问修饰符

在 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 中访问修饰符的用法和注意事项,希望对你有所帮助。