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.



