Python沒有真正的私有變量。內部實現上,是將私有變量進程了轉化,規則是:_<類名><私有變量>
下面的小技巧可以獲取私有變量:
1 class Test(object): 2 def __init__(self): 3 self.__zzz=111 4 5 if __name__ == '__main__': 6 a = Test() 7 print a._Test__zzz
同樣,通過a._Test__zzz=222的方式,可以修改私有變量的值。
通過dir(Test)和dir(a)可以看到類屬性和其實例屬性之間的區別:
print dir(Test) print dir(a) ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__'] ['_Test__zzz', '__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']