> 백엔드 개발 > 파이썬 튜토리얼 > 단일 및 이중 밑줄은 Python에서 변수 및 메서드 가시성에 어떤 영향을 줍니까?

단일 및 이중 밑줄은 Python에서 변수 및 메서드 가시성에 어떤 영향을 줍니까?

Patricia Arquette
풀어 주다: 2024-12-22 08:19:09
원래의
851명이 탐색했습니다.

How Do Single and Double Underscores Affect Variable and Method Visibility in Python?

밑줄 마스크 해제: Python에서 단일 및 이중 밑줄 이해

Python에서는 식별자 앞에 하나 또는 두 개의 밑줄이 있으면 클래스나 모듈 내에서 의미와 가시성을 변경합니다.

싱글 밑줄: 내부 사용 표시

앞에 밑줄이 있으면 속성이나 메서드가 현재 클래스 내에서 내부적으로 사용된다는 의미입니다. 그러나 이는 단지 관례일 뿐입니다. 개인 정보 보호는 시행되지 않습니다. 또한 모듈 함수의 단일 선행 밑줄은 외부 모듈에서 가져오면 안 된다는 것을 나타냅니다.

이중 밑줄: 이름 맹글링

앞의 두 밑줄은 이름 맹글링을 나타냅니다. 이러한 식별자는 ClassName이 앞에 추가되어 내부적으로 변환됩니다. 여기서 ClassName은 선행 밑줄이 제거된 현재 클래스 이름입니다. 이 메커니즘은 클래스 전용 인스턴스 및 클래스 변수의 정의를 허용하고 외부 액세스에 대한 일부 보호를 제공합니다. 그러나 결정된 개인은 여전히 ​​개인 변수에 액세스할 수 있으므로 이름 맹글링이 절대적인 개인 정보 보호를 보장하지는 않는다는 점에 유의하는 것이 중요합니다.

예:

다음 클래스를 고려하세요.

class MyClass():
    def __init__(self):
        self.__superprivate = "Hello"
        self._semiprivate = ", world!"
로그인 후 복사
  • __superprivate은 MyClass 인스턴스 내에서만 액세스할 수 있는 진정한 개인 변수이며 외부에서 직접 액세스할 수 없습니다.
  • _semiprivate는 일반적으로 비공개이지만 직접 액세스할 수 있습니다.

예제 출력에서 ​​볼 수 있듯이 __superprivate에 직접 액세스하면 AttributeError가 발생하지만 _semiprivate는 액세스할 수 있습니다.

__dict__ 속성은 __superprivate 및 _semiprivate을 맹글링하여 이름 맹글링 메커니즘을 확인합니다.

위 내용은 단일 및 이중 밑줄은 Python에서 변수 및 메서드 가시성에 어떤 영향을 줍니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿