2013-01-04 3 views
1

나는 그것이 어떻게 작동하는지 이해하고 나는 구문의 의미를 이해한다. 그러나 나는 그것을 왜 사용하고 싶어하는지 이해하지 못한다.실제 생활에서 개인적인 방법이 필요한 이유는 무엇입니까?

+5

스택 오버플로에 대한 적절한 질문이라고 생각하지 않습니다. 객체 지향 설계에 대한 막대한 양의 정보와 온라인에서 사적 대 공중의 이점이 있습니다. – Pete

+1

누군가 당신의 이름을 묻는다면 언제든지 지갑과 신분증을 넘겨 주시겠습니까? 누군가가 "너는 1 달러를 빌릴 수 있니?"라고 묻는다면 그들이 볼 수 있도록 귀하의 계정과 PIN을 제공합니까? – asawyer

+6

Python의 private 메소드에 대한 구문을 이해할 수 없습니다. – geoffspear

답변

5

파이썬에는 메소드를 포함한 비공개 멤버가 없습니다. 두 개의 밑줄 접두사는 실제로 이름이 추가로 엉망이되어서 파이썬에 의해 추가로 명시되는 개인 회원만을위한 "컨벤션"입니다. 외부에서 이러한 방법에 액세스하는 것은 불가능하지 않습니다.

일반적으로 회원을 실제로 "비공개"로 만들 필요는 없습니다. 종종 하나의 밑줄 접두사를 사용하여 구성원을 "내부"로 표시하고 유형의 사용자에게이를 유지하도록 요청합니다.

외에도 개인 (또는 내부) 메소드를 여전히 가지고있는 이유는 기능의 공통 부분을 메소드에 추출하여 반복 할 필요가 없기 때문입니다.

파이썬 멤버의 개인 설정이 누락 된 것에 대한 자세한 내용은 this question을 참조하십시오.

+0

그리고 모듈의 사용자에게 "이 방법을 직접 호출하지 말고 경고하면 다음 버전에서 사라질 때 나를 비난하지 마십시오." – geoffspear

0

sLet 년대는 같은 클래스에 subOperationAsuboperationB를 호출하는 동작을 operationA이 있다고, 그 방법은 데이터를 조작, 개별 작업과 같은 의미가 없습니다 당신은 그들 중 예기치 실행을 (방지해야 즉, 조작 A 이외의 메소드 호출이 있음을 의미합니다. 따라서 개인을 사용하면 메소드를 보호하고 캡슐화하여 원하는 범위로만 가시성을 제한 할 수 있습니다.