>백엔드 개발 >파이썬 튜토리얼 >Python 개체 이름에서 단일 밑줄과 이중 밑줄의 차이점은 무엇입니까?

Python 개체 이름에서 단일 밑줄과 이중 밑줄의 차이점은 무엇입니까?

DDD
DDD원래의
2024-12-24 08:32:14603검색

What's the Difference Between Single and Double Underscores in Python Object Names?

Python 객체 이름의 밑줄 이해하기>

Python에서 명명 규칙은 객체 명명에 중요한 역할을 합니다. 개체 이름 앞의 단일 및 이중 밑줄은 프로그래머가 해당 개체의 범위와 접근성을 이해하도록 안내하는 특정 의미를 갖습니다.

단일 밑줄(_name)

객체 이름의 앞에 밑줄이 하나 있으면 해당 객체가 클래스 내에서 내부적으로 사용된다는 의미입니다. 이는 객체가 클래스 외부에서 액세스되거나 수정되지 않음을 나타내는 방법입니다. 그러나 이 규칙은 강제 제한이 아니라 지침이라는 점에 유의하는 것이 중요합니다.

단일 밑줄은 다른 곳에서 가져오면 안 되는 모듈이나 기능을 나타내는 데에도 사용됩니다. 객체 이름 앞에 밑줄을 붙이면 다른 프로그래머에게 해당 객체가 비공개 요소로 처리되어야 함을 나타냅니다.

이중 밑줄(__name__)

이중 선행 밑줄은 뒤에서 객체의 이름을 수정하는 기술인 이름 맹글링(name mangling)에 사용됩니다. 이 변환은 객체 이름을 클래스 이름과 밑줄이 포함된 수정된 버전으로 바꿉니다.

Python 문서에 따르면 이중 밑줄은 객체가 현재 클래스 내에서 전용 변수나 메서드로 처리되어야 함을 나타냅니다. 그러나 이름 변경이 절대적인 것은 아니라는 점을 이해하는 것이 중요합니다. 결정된 개인은 여전히 ​​비공개로 표시된 변수에 액세스하거나 수정할 수 있습니다.

다음 Python 클래스를 고려해 보겠습니다.

class MyClass():
    def __init__(self):
        self.__superprivate = "Hello"
        self._semiprivate = ", world!"

mc = MyClass()
print(mc._semiprivate)  # Accessible
print(mc.__superprivate)  # Not accessible outside the class

In 이 예에서 __superprivate 변수는 이중 밑줄을 사용하여 개인용으로 표시되는 반면 _semiprivate 변수는 단일 밑줄. __superprivate 변수는 클래스 외부에서 액세스할 수 없는 반면, _semiprivate 변수는 액세스할 수 있지만 클래스 내부로 간주해야 합니다.

위 내용은 Python 개체 이름에서 단일 밑줄과 이중 밑줄의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.