在Python中,并没有真正的私有变量,但是可以通过一种约定来表示一个变量是私有的,即变量名前加两个下划线(`__`)。这种约定让其他开发者知道不应该直接访问这个变量,而应该通过类提供的方法来访问或修改它。
要访问Python中的“私有”变量,你可以使用以下方法之一:
通过类的方法访问
class MyClass:
def __init__(self):
self.__private_var = 100
def get_private_var(self):
return self.__private_var
my_obj = MyClass()
print(my_obj.get_private_var()) 输出:100
使用`property`装饰器
class MyClass:
def __init__(self):
self.__private_var = 100
@property
def private_var(self):
return self.__private_var
@private_var.setter
def private_var(self, value):
if value < 0:
print("年龄不能小于0")
else:
self.__private_var = value
my_obj = MyClass()
print(my_obj.private_var) 输出:100
my_obj.private_var = 200 设置私有变量的值
print(my_obj.private_var) 输出:200
通过名称改编(Name Mangling)访问
虽然不推荐直接访问改编后的名称,但了解其机制可以帮助你理解Python的私有变量概念。改编是通过在私有变量名前加上类名和两个下划线来实现的,例如`_ClassName__private_var`。
class MyClass:
def __init__(self):
self.__private_var = 100
my_obj = MyClass()
print(my_obj._MyClass__private_var) 输出:100
请注意,尽管可以通过这些方法访问私有变量,但根据Python的设计哲学,你应该尽量避免直接访问私有变量,而是依赖于类提供的公共接口。这样做可以保持封装性和代码的可维护性