Python의 데이터 은닉: 정의, 장점 및 단점 [코딩 예제 포함]
게시 됨: 2021-02-05목차
데이터 은닉이란 무엇입니까?
객체 지향 프로그래밍(OOP)에서 컴퓨터 코드 내에서 정보/데이터를 숨기려는 의도로 숨기는 방법입니다. 데이터 멤버와 같은 내부 개체 세부 정보는 클래스 내에서 숨겨집니다. 개체 무결성을 유지하면서 클래스 구성원에 대한 제한된 데이터 액세스를 보장합니다. 데이터 은닉은 데이터와 기능을 단일 단위로 결합하여 클래스 외부에서 데이터에 대한 직접 액세스를 제한하여 클래스 내 데이터를 숨기는 프로세스를 포함합니다. 데이터 과학의 초보자이고 전문 지식을 얻고 싶다면 최고의 대학에서 제공하는 데이터 과학 과정을 확인하십시오.
데이터 은닉은 컴퓨터 프로그래머가 프로그램의 다른 클래스에서 불필요한 진입을 방지함으로써 고유한 데이터 세트와 기능을 가진 클래스를 생성하는 데 도움이 됩니다. OOP의 소프트웨어 개발 기술이기 때문에 독점적인 데이터 액세스를 보장하고 데이터의 의도하거나 의도하지 않은 변경을 방지합니다. 소프트웨어 구성 요소의 이러한 제한된 상호 의존성은 시스템 복잡성을 줄이고 프로그램의 견고성을 높이는 데 도움이 됩니다.
데이터 은닉은 정보 은닉 또는 데이터 캡슐화라고도 합니다. 데이터 캡슐화는 사용자에게 애플리케이션 구현 세부 정보를 숨기기 위해 수행됩니다. 둘 다 의도가 같기 때문에 캡슐화를 데이터 은닉이라고도 합니다. 데이터 멤버가 클래스에서 private로 언급되면 동일한 클래스 내에서만 액세스할 수 있고 해당 클래스 외부에서는 액세스할 수 없습니다.
파이썬의 데이터 은닉
파이썬은 모든 분야에 적용되고 쉬운 프로그램 구현 도구와 라이브러리를 가지고 있어 인기 있는 프로그래밍 언어가 되고 있습니다. Python 문서는 데이터 은닉을 프로그램 구현의 일부에서 클라이언트를 격리하는 것으로 정의합니다. 모듈의 일부 개체는 내부에 유지되고 사용자가 볼 수 없으며 액세스할 수 없습니다.
프로그램의 모듈은 응용 프로그램을 사용하는 방법을 이해할 수 있을 만큼 충분히 열려 있지만 사용자는 응용 프로그램이 어떻게 작동하는지 알 수 없습니다. 따라서 데이터 은닉은 종속성을 피하는 것과 함께 보안을 제공합니다. Python에서 데이터 숨김은 응용 프로그램의 특정 사용자에 대한 액세스를 방지하는 방법입니다.
파이썬에서 데이터 숨김은 속성 이름 앞에 (접두사) 이중 밑줄을 사용하여 수행됩니다. 이렇게 하면 속성이 비공개/액세스할 수 없게 되어 사용자에게 표시되지 않습니다. 파이썬은 진정한 의미에서 비밀이 없습니다. 그래도 private 메소드와 속성의 이름은 내부적으로 맹글링되고 즉석에서 풀려서 지정된 이름으로 액세스할 수 없습니다.
파이썬에서 데이터 은닉의 예
#!/usr/bin/python
클래스 JustCounter :
__secretCount = 0
def 카운트 ( 자체 ):
자기 . __secretCount += 1
셀프 인쇄 . __secretCount
카운터 = JustCounter ()
카운터 . 카운트 ()
카운터 . 카운트 ()
인쇄 카운터 . __secretCount
산출
1
2
역추적(가장 최근 호출 마지막):
<module>의 12번째 줄 "test.py" 파일
인쇄 카운터.__secretCount
AttributeError: JustCounter 인스턴스에 '__secretCount' 속성이 없습니다.
Python은 내부적으로 object._className__attrName에 의해 액세스되는 클래스의 멤버 이름을 변경합니다.

마지막 줄이 다음과 같이 변경된 경우:
…………………………………………………………………………………………………………
인쇄 카운터._JustCounter__secretCount
그런 다음 작동하고 출력은 다음과 같습니다.
1
2
2
데이터 은닉의 장점
- 클래스 내의 개체와 관련 없는 데이터의 연결이 끊어집니다.
- 기밀 데이터에 액세스할 수 없는 해커에 대한 보안을 강화합니다.
- 프로그래머가 실수로 잘못된 데이터에 연결하는 것을 방지합니다. 프로그래머가 코드에서 이 데이터를 연결하면 실수의 수정 사항을 표시하여 오류만 반환합니다.
- 객체를 OOP의 기본 개념으로 격리합니다.
- 휘발성 데이터를 공개적으로 숨겨 손상을 방지하는 데 도움이 됩니다 .
데이터 은닉의 단점
- 때때로 프로그래머가 추가 코딩을 사용하도록 강제할 수 있습니다.
- 보이는 데이터와 보이지 않는 데이터 간의 연결은 개체의 작업 속도를 높이지만 데이터 숨김은 이러한 연결을 방지합니다.
- 데이터 은닉은 프로그래머를 어렵게 만들고 숨겨진 데이터에 효과를 만들기 위해 긴 코드를 작성해야 합니다.
따라서 데이터 숨김은 응용 프로그램 내의 특정 정보에 대한 개인 정보 보호 및 보안과 관련하여 Python에서 유용합니다. 코드에 숨겨진 데이터를 연결하는 동안 프로그래머의 작업량이 늘어납니다. 그러나 그것이 제공하는 이점은 정말로 피할 수 없습니다.
또한 읽기: Python 인터뷰 질문 및 답변
결론
Python 온라인 과정에 무료로 참여하려면 다음 단계만 수행하면 됩니다.
- upStart 페이지로 이동
- "Python for Data Science" 과정 선택
- 등록 클릭
- 등록 절차 완료
그게 다야 새로 출시된 upStart 프로그램을 통해 Python을 온라인으로 무료로 배우고 데이터 과학 여정을 시작할 수 있습니다. 몇 주 동안 하루에 30분만 투자하면 됩니다. 이 프로그램은 금전적 투자가 필요하지 않습니다.
지금 가입하고 시작하세요.
이 주제와 관련하여 질문이나 제안 사항이 있으면 아래 의견에 알려주십시오. 여러분의 의견을 듣고 싶습니다.
데이터 과학에 대해 자세히 알아보려면 작업 전문가를 위해 만들어졌으며 10개 이상의 사례 연구 및 프로젝트, 실용적인 실습 워크숍, 업계 전문가와의 멘토링, 1 - 업계 멘토와 일대일, 400시간 이상의 학습 및 최고의 기업과의 취업 지원.
파이썬에서 데이터를 숨기는 것은 무엇입니까?
데이터 은닉은 외부 세계의 데이터 액세스를 제한하는 객체 지향 프로그래밍의 핵심 개념 중 하나입니다. 데이터 멤버와 같은 세부 정보는 "비공개" 액세스 지정자의 도움으로 숨겨져 있습니다. 더 나은 이해를 위해 다음 예를 고려하십시오.
myClass라는 클래스와 __privateCounter라는 개인 멤버가 있다고 가정합니다. 이 클래스 안에는 __privateCounter의 값을 1씩 증가시켜 출력하는 myFunc라는 함수가 있습니다. 클래스 외부에서 클래스의 개체를 만들고 이 개체를 사용하여 myFunc를 호출했습니다. 이제 이 객체를 사용하여 __privateCounter를 인쇄하려고 하면 오류가 발생합니다.
위의 예에서 "__privateCounter"는 기본적으로 "myClass" 클래스의 private 멤버입니다. 데이터 숨김을 수행했기 때문에 선언된 클래스 외부에서 액세스할 수 없습니다. 비공개 멤버에 액세스하려면 멤버 함수를 정의해야 합니다. 이 경우에는 "myFunc"입니다.
데이터 은닉의 장점과 단점은 무엇입니까?
데이터 은닉은 OOP의 핵심 개념이며 많은 장점이 있지만 몇 가지 단점도 있습니다. 다음은 Python에서 데이터 숨기기의 가장 중요한 장점과 단점 중 일부입니다.
장점
1. 휘발성 데이터를 비공개로 선언하여 오용 및 조작을 방지하는 데 도움이 됩니다.
2. 클래스의 데이터 멤버는 관련 없는 데이터에서 연결 해제됩니다.
3. 객체를 OOP의 기본 개념으로 분리합니다.
단점
1. 프로그래머는 클라이언트로부터 휘발성 데이터를 보호하기 위해 종종 긴 코드를 작성해야 합니다.
2. 눈에 보이는 데이터와 보이지 않는 데이터 사이의 연결은 빠르게 작동하고 데이터 숨김은 이러한 연결을 방지하기 때문에 개체가 비교적 느리게 작동합니다.
데이터 은닉은 데이터 추상화와 어떻게 다릅니까?
데이터 은닉은 외부 세계에서 액세스하거나 수정할 수 없도록 데이터를 제한하는 아이디어를 지원합니다. 예를 들어 직원의 급여 세부 정보는 다른 직원에게 숨겨져 있습니다. Python에서는 "private access modifier"를 사용하여 이 작업을 수행합니다.
데이터 추상화는 내부 구현을 숨기고 기능만 외부 세계에 보여주는 아이디어를 나타냅니다. 예를 들어 계산기에서는 계산기에서 수행한 작업만 표시됩니다. 그러나 이러한 작업의 내부 작업은 볼 수 없습니다. Python에서는 이를 구현하기 위해 다양한 액세스 지정자가 사용됩니다.