Python 캡슐화 비밀

PythonBeginner
지금 연습하기

소개

고대 세계의 신비가 여전히 번성하는 시대에, 유령 수호자인 스펙트럴 센티넬 (spectral sentinel) 에 의해 지켜지는, 신비에 싸인 숨겨진 사원이 있습니다. 이 사원은 캡슐화 (encapsulation) 의 비밀을 간직하고 있다고 전해지며, 이는 마치 Python 의 캡슐화가 객체의 데이터 무결성을 보호하는 것처럼 사원의 보물을 보호하는 신비로운 힘입니다. 야심 찬 Python 마법사로서, 여러분의 목표는 이러한 비밀을 밝혀내고, 수호자의 퍼즐을 풀고, Python 에서 캡슐화의 기술을 마스터하여 그 안에 담긴 비전 지식을 얻는 것입니다.

Sentinel 클래스 제작

이 단계에서는 Python 에서 캡슐화에 대한 첫 번째 만남이 될 유령 수호자를 나타내는 클래스를 제작하여 여정을 시작합니다. 이 수호자는 특정 메서드를 통해서만 접근할 수 있는 비밀 메시지를 저장하며, 이는 private 속성의 강력함을 보여줍니다. 여러분은 비밀을 보호하기 위해 private 속성과 메서드를 사용하여 Sentinel 클래스를 만들 것입니다.

이제 선호하는 텍스트 편집기에서 ~/project/sentinel.py를 열고 다음 코드를 추가하십시오.

class Sentinel:
    def __init__(self):
        self.__message = 'The key to encapsulation lies within the walls.'

    def reveal_message(self):
        return self.__message

guardian = Sentinel()
print(guardian.reveal_message())

이 코드에서 __message는 이중 밑줄로 표시된 private 속성으로, 클래스 자체 내에서만 접근할 수 있음을 의미합니다. reveal_message 메서드는 __message 속성에 대한 제어된 접근을 제공합니다.

코드를 실행해 보십시오:

python sentinel.py

수호자의 비밀 메시지가 출력되는 것을 볼 수 있습니다:

The key to encapsulation lies within the walls.

Guardian 강화

이 단계에서는 올바른 암호가 제공된 경우에만 비밀 메시지를 수정할 수 있는 메서드를 사용하여 Sentinel 클래스를 강화합니다. 이는 센티넬의 캡슐화를 더욱 안전하게 만들고 Python 클래스에서 데이터와 동작을 모두 캡슐화하는 방법을 보여줍니다.

다음 코드로 sentinel.py를 업데이트하십시오:

## sentinel.py

class Sentinel:
    def __init__(self):
        self.__message = 'The key to encapsulation lies within the walls.'
        self.__passphrase = 'abracadabra'

    def reveal_message(self):
        return self.__message

    def change_message(self, new_message, passphrase):
        if passphrase == self.__passphrase:
            self.__message = new_message
        else:
            print('Incorrect passphrase!')

guardian = Sentinel()
guardian.change_message('Encapsulation is powerful!', 'abracadabra')
print(guardian.reveal_message())

이제 코드를 실행하면:

python sentinel.py

올바른 암호가 사용된 경우 메시지가 업데이트된 것을 볼 수 있습니다:

Encapsulation is powerful!

요약

이 랩에서는 고대 원리가 Python 에서 캡슐화라는 현대적 개념을 반영하는 세계로 모험을 떠났습니다. private 속성을 사용하여 비밀을 지키는 Sentinel 클래스를 만들고, public 메서드를 통해 이러한 속성을 조작하는 방법을 배웠으며, 암호를 사용하여 접근 제어를 시행했습니다. 이 랩의 설계는 Python 클래스의 private 및 public 인터페이스를 이해하기 위한 실습 방식을 보장하고, 캡슐화가 숨기는 것만큼이나 올바른 세부 사항을 노출하는 것에 관한 것이라는 아이디어를 강화하기 위한 것이었습니다.

이 연습을 통해 캡슐화가 객체 지향 프로그래밍의 기본 측면인 이유와 Python 에서 이를 어떻게 우아하게 달성할 수 있는지에 대한 더 깊은 통찰력을 얻었습니다. 좋은 코드를 작성하는 기술은 종종 핵심 로직을 보호하면서 필요한 것을 드러내는 파사드를 만드는 것을 포함한다는 것을 기억하십시오. 마치 고대 이야기 속 신화적인 수호자처럼 말입니다.