我有一個python模塊,m1。如何訪問Python中的常規私有變量?
# m1.py
class C1(object):
def __init__(self):
self.__pri = 10
self._pro = 5
self.pub = 1
然後在bpython,
>>> import m1
>>> c = m1.C1()
>>> c.__pri
Traceback (most recent call last):
File "<input>", line 1, in <module>
AttributeError: 'C1' object has no attribute '__pri'
>>> c._pro
5
>>> c.pub
1
>>> dir(c)
['_C1__pri', '__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__',
'__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_pro', 'pub']
>>> c._C1__pri
10
我想沒有在python私有變量的概念。我們現在如何解釋這種行爲?
編輯:我期待訪問c .__ pri直,但事實證明,name mangling
阻止我這樣做,如下面的答案。謝謝大家!
你想從我們這裏得到什麼?)是的,它確實是這樣工作的。 – alexvassel
你在這裏預期什麼? –
這是廣泛記錄(http://docs.python.org/2/tutorial/classes.html#private-variables-and-class-local-references),請在問這樣的問題之前做一些研究。 – l4mpi