파이썬 개인 기능과 독자적인 방법

  어떤 언어, 일부 개체 규정한다 그것이 방문 할 수없는 범위에서, 오직 특정 범위 내에서 액세스 할 수있는 (프로퍼티, 메소드, 함수, 등). 이것은 "공개"와 "개인"부분입니다. 또한, 구체적으로 예약 된 단어입니다 데프 등의 클래스 이름을 사용할 수 없습니다 클래스로, 어떤 특별한 무언가 특별한 표현이 지정됩니다. 예약 된 단어뿐만 아니라, 파이썬은 또한 클래스의 이름에 대한 특별한 준비를하였습니다, 그것은 "독점"카테고리입니다.

개인 기능

  어떤 시점에서, 당신이 오히려 특별한 메소드 이름이입니다 볼 것 "__"을 두 번 교차 시작, 호출 된 함수 / 메소드 이러한 유형의 이름 "개인 기능을합니다."

  소위 개인 기능이 있습니다 : 개인 기능이 자신의 모듈 외부에서 호출 할 수 없습니다 자신의 클래스 외부에서 호출 할 수 없습니다 개인 클래스 메소드 개인 재산이 자신의 클래스 외부에서 액세스 할 수없는 개인 통신에의 공공 친구 소위 . 특수 키 단어와 일부 프로그래밍 언어는 함수 나 방법을 설명하기 위해 또는 클래스는 개인 또는 공용입니다. 하지만 파이썬 씨 홍콩 치우에 대한 깊은 이해가 2K 년 전 의미 "정확한 말은 진실 반지"고 말했다 때문에 파이썬은 이름 만 설명했다.

  파이썬의 경우 함수 이름, 클래스 메서드 또는 속성이 두 개의 밑줄 (그러나 끝나지) 시작, 그것은 개인의, 나머지는 모두 공개적으로 소유하고 있습니다. 클래스 메소드 중 하나입니다 (그들의 자신의 클래스에서 액세스) 개인 또는 (어디에서 액세스) 공개.

예를 들면 :

클래스 이용시 : 

    DEF  __init__ (자기 이름) 
        self.name = 네임
         프린트 (self.name) 

    데프  __work (자기 급여)
         인쇄 ( " %의 급여는 :가 % d ' % (self.name 급여)) 


경우  __name__ == " __main__ " : 
    임원 = 사람 ( " " ) 
    장교. __work (1000)

결과 :


: (가장 최근 통화 마지막) 역 추적 
  파일 " C : /Users/Administrator/PycharmProjects/Myworld/work.py " , 라인 13 에서 <모듈> 
    임원. __work는 (1000 ) 
AttributeError은 : ' 사람 ' 개체가 어떤 속성이없는 ' __work를 '

이 동작 할 때 작업의 결과에서 볼 수 있듯이 장교 .__ 일 (1000) 때 오류가 발생했습니다. 그리고 말했다 오류 메시지가 아닌 방법에서. 이것은 (클래스 또한 옹호하지 않는 민간 방법은 너무 많은 문제입니다 호출 할 수 밖에 사실) 비공개 방법은 클래스의 밖으로 호출 할 수 없음을 보여줍니다.

수정 위의 다음 코드는, 수 :

클래스 이용시 :
     DEF  __init__ (자기 이름) 
        self.name = 네임
         프린트 (self.name) 

    데프  __work (자기 급여)
         인쇄 ( " %의 급여는 :가 % d ' % (self.name 급여)) 

    데프 근로자 (자동) : 
        자체. __work (500)   # 在类内部调用私有方法


경우  __name__ == " __main__ " : 
    임원 = 사람 ( " " )   # 
    #임원 .__ 작업 (1000) 
    officer.worker ()   # 톰 급여는 다음과 같습니다 (500)

또한 얻어지는 결과이다.

독점 방법

당신이 말,하지만 거기에 이중 대시로 시작하는 경우, 명명 방법은 개인 방법이다;

이중 점선이 시작 더블 체인 라인으로 끝나는 경우 방법은 독자적인 방법을 지정됩니다.

예를 들어 __init의 __ ()는 전형적인 특허 방법이다. 그런 다음 시작과 끝 __ 사용하지 않는, 자신에게 다른 방법을 쓰기. 프로그램이 좋지 않은 경우 사용이도 아마 거의 영향을 미치지 만, 많은 더 가독성에, 가독성을 가지고 있지만, 혼자 다른 사람을 보자, 오래 걸리지 않을 것입니다 그들은 읽을 수 없습니다?

독점에있어서, 상기 정보 __init의 __ (),이 같은 있습니다 : __ STR __, __ setitem__ 등을보고 싶어, 당신이 디렉토리를 사용할 수있다 () 함수는 대화 형 모드에서 독자적인 작품을보고 내부 기능입니다.

 

추천

출처www.cnblogs.com/maplethefox/p/11615297.html