python类私有属性
python中没有private关键字,想要创建一个类私有的变量需要通过命名规则来实现
在变量名之前加两个下划线__name,则在类外部就不能直接通过实例.__name
访问,具体原理python编译器将其命名修改为了_类名__name
,通过其实实例._类名__name
还是可以访问
class Test(object):
def __init__(self, var1, var2):
# 私有实例变量
self.__private_var = var1
self.var = var2
def get_private_var(self):
print self.__private_var
def set_private_var(self, var):
self.__private_var = var
instance = Test('private var', 'public var')
print instance.var
#通过 实例._类名__name 强制访问
print instance._Test__private_var
instance.get_private_var()
instance.set_private_var('var')
print instance.__private_var
输出
public var
private var
private var
Traceback (most recent call last):
File "D:\Code\helloPython\class_test.py", line 24, in <module>
print instance.__private_var
AttributeError: 'Test' object has no attribute '__private_var'