파이썬 모듈 m1이 있습니다. bpython에서 다음파이썬에서`conventional` 개인 변수에 접근하는 방법은 무엇입니까?
# m1.py
class C1(object):
def __init__(self):
self.__pri = 10
self._pro = 5
self.pub = 1
는
>>> 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
나는 파이썬에서 private 변수의 어떤 개념이 없다 생각했다. 우리는 어떻게이 행동을 지금 설명 할 수 있습니까?
편집 : 나는 c .__ pri에 곧바로 액세스 할 것으로 예상했지만, name mangling
은 내가 아래 답변처럼 그것을하지 못하게합니다. 모두에게 감사드립니다!
우리에게 무엇을 원하십니까?) 예, 이렇게 작동합니다. – alexvassel
여기서 무엇을 기대하셨습니까? –
이것은 광범위하게 문서화되어 있습니다 (http://docs.python.org/2/tutorial/classes.html#private-variables-and-class-local-references). 이렇게 질문하기 전에 몇 가지 조사를 해보십시오. – l4mpi