Segredos de Encapsulamento em Python

PythonBeginner
Pratique Agora

Introdução

Numa era onde o misticismo do mundo antigo ainda prospera, existe um templo escondido envolto em mistério e guardado pelo sentinela espectral, um guardião fantasmagórico. Diz-se que este templo detém o segredo da encapsulação, um poder místico que protege os tesouros do templo, assim como a encapsulação em Python protege a integridade dos dados de um objeto. Como um aspirante a mago Python, seu objetivo é desvendar esses segredos, navegar pelos enigmas do guardião e dominar a arte da encapsulação em Python para reivindicar o conhecimento arcano contido lá dentro.

Criando a Classe Sentinel

Nesta etapa, você começará sua jornada criando uma classe que representa o guardião fantasmagórico, que será seu primeiro encontro com a encapsulação em Python. Este guardião armazena uma mensagem secreta que só pode ser acessada através de um método específico, demonstrando o poder dos atributos privados. Você criará a classe Sentinel com atributos e métodos privados para proteger seus segredos.

Agora, abra ~/project/sentinel.py no seu editor de texto preferido e adicione o seguinte código:

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())

Neste código, __message é um atributo privado, denotado pelos dois sublinhados, o que significa que ele só é acessível dentro da própria classe. O método reveal_message fornece acesso controlado ao atributo __message.

Tente executar o código:

python sentinel.py

Você deve ver a mensagem secreta do guardião impressa:

The key to encapsulation lies within the walls.

Aprimorando o Guardian

Nesta etapa, você aprimorará a classe Sentinel com um método para permitir a modificação da mensagem secreta, mas somente se a senha correta for fornecida. Isso protegerá ainda mais a encapsulação do nosso Sentinel e mostrará como encapsular dados e comportamento em uma classe Python.

Atualize o sentinel.py com o seguinte código:

## 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())

Agora, quando você executar o código:

python sentinel.py

Você verá que a mensagem foi atualizada se a senha correta for usada:

Encapsulation is powerful!

Resumo

Neste laboratório, você se aventurou em um mundo onde princípios antigos espelhavam o conceito moderno de encapsulamento em Python. Você criou uma classe Sentinel que guardava seus segredos usando atributos privados, aprendeu a manipulá-los através de métodos públicos e impôs controle de acesso com uma senha. O design deste laboratório foi para garantir uma abordagem prática para entender as interfaces privadas e públicas de uma classe Python, reforçando a ideia de que a encapsulação é tanto sobre expor os detalhes certos quanto sobre escondê-los.

Através deste exercício, você obteve uma compreensão mais profunda de por que a encapsulação é um aspecto fundamental da programação orientada a objetos e como ela pode ser elegantemente alcançada em Python. Lembre-se, a arte de escrever um bom código frequentemente envolve a criação de uma fachada que revela o que é necessário, enquanto protege a lógica central, assim como os guardiões míticos de nossos contos antigos.