> 백엔드 개발 > 파이썬 튜토리얼 > Python의 이중 밑줄 표기법은 진정한 형태의 데이터 프라이버시입니까?

Python의 이중 밑줄 표기법은 진정한 형태의 데이터 프라이버시입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-01 19:19:15
원래의
518명이 탐색했습니다.

Is Python's Double Underscore Notation a True Form of Data Privacy?

Python의 이중 밑줄 수수께끼: 개인 정보 보호에 대한 잘못된 약속

이중 밑줄이 있음에도 불구하고 Python의 "비공개" 방법은 놀랍게도 다음과 같습니다. 완전히 비공개는 아닙니다. 이 명백한 역설은 캡슐화에 대한 Python의 독특한 접근 방식에서 발생합니다.

이중 밑줄이 메서드나 변수 이름 앞에 붙으면 Python은 이를 이름을 변경하는 표시기로 해석합니다. 원래 이름을 사용하는 대신 밑줄, 클래스 이름 및 원래 이름을 연결합니다. 예를 들어 __myPrivateMethod는 _MyClass__myPrivateMethod가 됩니다.

이 이름 스크램블링 기술은 서브클래스가 실수로 슈퍼클래스에서 상속된 비공개 메서드와 속성을 재정의하는 것을 방지하는 데 사용됩니다. 예를 생각해 보십시오.

class Foo(object):
    def __init__(self):
        self.__baz = 42
    def foo(self):
        print self.__baz
로그인 후 복사

하위 클래스 Bar가 상위 클래스의 비공개 멤버와 동일한 이름을 가진 멤버를 정의하는 경우 Python의 이름 스크램블 메커니즘을 통해 해당 멤버가 고유하게 유지되고 잠재적인 충돌을 방지할 수 있습니다.

그러나 이 기술은 클래스 외부에서 Private 멤버에 고의적으로 접근하는 것을 막지는 못합니다. 아래 예에서 볼 수 있듯이 변경된 이름을 사용하여 이름이 변경된 전용 멤버에 직접 액세스할 수 있습니다.

x = Foo()
print x._Foo__baz  
# Output: 42
로그인 후 복사

따라서 Python의 이중 밑줄 규칙은 개인 정보 보호라는 환상을 만들어내지만 궁극적으로 약한 형태의 캡슐화입니다. 서브클래스에 의한 우발적인 메소드 재정의를 방지하지만 외부 엔터티의 의도적인 액세스를 방지할 수는 없습니다.

위 내용은 Python의 이중 밑줄 표기법은 진정한 형태의 데이터 프라이버시입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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