📌  相关文章
📜  Python中的访问修饰符:公共、私有和受保护(1)

📅  最后修改于: 2023-12-03 15:04:37.308000             🧑  作者: Mango

Python中的访问修饰符:公共、私有和受保护

Python是一种面向对象的编程语言,它支持类和对象的概念。访问修饰符是一种语言特性,用于控制类成员的可访问性。

Python中的访问修饰符包括公共、私有和受保护。在Python中,默认情况下所有成员都是公共成员,即可以从类的外部访问。但是,如果要将成员定义为私有或受保护,则需要使用特殊的语法。

公共成员

公共成员是类中默认的访问修饰符。公共成员可以从类的外部访问,也可以从类的内部访问。

语法:

class MyClass:
    def __init__(self):
        self.public_member = "This is a public member"

my_object = MyClass()
print(my_object.public_member) # Output: This is a public member
私有成员

私有成员是只能在类内部访问的成员,其他地方(包括子类)不能访问。在Python中,可以使用双下划线前缀来定义私有成员。

语法:

class MyClass:
    def __init__(self):
        self.__private_member = "This is a private member"

my_object = MyClass()

# Accessing private member outside the class
# This will give an AttributeError: 'MyClass' object has no attribute '__a'
print(my_object.__private_member)

上面的代码会抛出一个AttributeError,因为私有成员不能从类的外部访问。但是,可以在类的内部访问成员。可以使用公共成员函数来访问私有成员。

class MyClass:
    def __init__(self):
        self.__private_member = "This is a private member"

    def get_private_member(self):
        return self.__private_member

my_object = MyClass()

# Accessing private member using public method
print(my_object.get_private_member()) # Output: This is a private member
受保护的成员

受保护的成员是只能在类内部和子类中访问的成员。在Python中,可以使用单下划线前缀来定义受保护的成员。

class MyClass:
    def __init__(self):
        self._protected_member = "This is a protected member"

class MySubClass(MyClass):
    def __init__(self):
        super().__init__()

        # Accessing protected member of base class
        print(self._protected_member)

my_object = MySubClass() # Output: This is a protected member
总结

Python中的访问修饰符包括公共、私有和受保护。公共成员是类中默认的访问修饰符,可以从任何地方访问。私有成员只能在类内部访问,其他地方访问会抛出一个AttributeError异常。受保护的成员只能在类内部和子类中访问。拥有良好的访问修饰符实践可以提高代码的安全性和可维护性。