2017-10-17 8 views
0

나는이 다음은왜 파이썬은 내 속성 이름을 다시 매핑합니까?

['_info', '_Boo__bingo', '_x'] 

__bingo 이름이 변경됩니까 인쇄

class Boo(object): 
    def __init__(self, x): 
     self._x = x 
     self.__bingo = 3 
     self._info = {'x': x, 'y':42} 
    def __dir__(self): 
     return ['x'] 
    @property 
    def x(self): 
     return self._x 
    @property 
    def z(self): 
     return self._x+1 
    def __getattr__(self, key): 
     return self._info[key] 

b = Boo(44) 
b.__dict__.keys() 

파이썬

에서 실행하는 경우? 이중 밑줄 속성이 예약되어 있습니까?

+0

* 정확하게 파이썬에게 * 수행했기 때문입니다. 이중 밑줄을 사용하는 아이디어는 어디서 얻었습니까? 이 행동에 비틀 거 렸니? 아니면 이중 밑줄이 "비공개"라는 자습서를 따르고 있습니까? –

+0

중복으로 표시되는 데 문제가 없지만 [연결된 질문] (https://stackoverflow.com/questions/7456807/python-name-mangling)은이 질문과 관련이 있습니다. 내 질문에 답하는 [그 질문에 대한 대답] (https://stackoverflow.com/a/34903236/44330)이 있습니다. –

+0

@ juanpa.arrivillaga 나는이 행동에 비틀 거 렸고, 왜 내 질문이 정확히 무엇인지 알고 싶었다. (귀하의 의견은 다소 오만한 것처럼 보입니다.) –

답변

2

맹 글링과 관련이 있습니다. 파이썬의 인터프리터가하는 일입니다. 여기에 관한 기사가 있습니다.

https://shahriar.svbtle.com/underscores-in-python

+1

아아, 여기에 문서의 항목이있다 : https://docs.python.org/2.7/tutorial /classes.html#tut-private –