📅  最后修改于: 2023-12-03 15:04:37.308000             🧑  作者: Mango
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异常。受保护的成员只能在类内部和子类中访问。拥有良好的访问修饰符实践可以提高代码的安全性和可维护性。