Secretos de encapsulación en Python

PythonPythonBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En una era en la que el misterio del mundo antiguo todavía prospera, existe un templo oculto envuelto en misterio y custodiado por el centinela espectral, un guardián fantasmagórico. Se dice que este templo alberga el secreto de la encapsulación, un poder místico que protege los tesoros del templo de la misma manera en que la encapsulación en Python protege la integridad de los datos de un objeto. Como un aspirante a mago de Python, tu objetivo es descubrir estos secretos, navegar a través de los enigmas del guardián y dominar el arte de la encapsulación en Python para reclamar el conocimiento arcano que hay dentro.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ObjectOrientedProgrammingGroup(["Object-Oriented Programming"]) python/ObjectOrientedProgrammingGroup -.-> python/encapsulation("Encapsulation") subgraph Lab Skills python/encapsulation -.-> lab-271548{{"Secretos de encapsulación en Python"}} end

Creando la clase Sentinel

En este paso, comenzarás tu viaje creando una clase que represente al guardián fantasmagórico, que será tu primer encuentro con la encapsulación en Python. Este guardián almacena un mensaje secreto que solo se puede acceder a través de un método específico, lo que demuestra el poder de los atributos privados. Crearás la clase Sentinel con atributos y métodos privados para proteger sus secretos.

Ahora, abre ~/project/sentinel.py en tu editor de texto preferido y agrega el siguiente código:

class Sentinel:
    def __init__(self):
        self.__message = 'La clave de la encapsulación se encuentra dentro de las paredes.'

    def reveal_message(self):
        return self.__message

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

En este código, __message es un atributo privado, denotado por los dobles guiones bajos, lo que significa que solo es accesible dentro de la clase misma. El método reveal_message proporciona un acceso controlado al atributo __message.

Intenta ejecutar el código:

python sentinel.py

Deberías ver el mensaje secreto del guardián impreso:

La clave de la encapsulación se encuentra dentro de las paredes.

Mejora del Guardián

Para este paso, mejorará la clase Sentinel con un método que permita la modificación del mensaje secreto, pero solo si se proporciona la frase mágica correcta. Esto reforzará la encapsulación de nuestro Guardián y mostrará cómo encapsular tanto datos como comportamiento en una clase de Python.

Actualice sentinel.py con el siguiente código:

## sentinel.py

class Sentinel:
    def __init__(self):
        self.__message = 'La clave de la encapsulación se encuentra dentro de las paredes.'
        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('Frase mágica incorrecta!')

guardian = Sentinel()
guardian.change_message('La encapsulación es poderosa!', 'abracadabra')
print(guardian.reveal_message())

Ahora, cuando ejecute el código:

python sentinel.py

Verá que el mensaje se ha actualizado si se utiliza la frase mágica correcta:

La encapsulación es poderosa!

Resumen

En este laboratorio, te aventuraste en un mundo donde los principios antiguos reflejaban el concepto moderno de encapsulación en Python. Creaste una clase Sentinel que guardaba sus secretos utilizando atributos privados, aprendiste cómo manipularlos a través de métodos públicos y aplicaste control de acceso con una frase mágica. El diseño de este laboratorio fue para garantizar un enfoque práctico para entender las interfaces privada y pública de una clase de Python, reforzando la idea de que la encapsulación es tanto sobre exponer los detalles correctos como sobre ocultarlos.

A través de este ejercicio, has adquirido una comprensión más profunda de por qué la encapsulación es un aspecto fundamental de la programación orientada a objetos y cómo se puede lograr con elegancia en Python. Recuerda, el arte de escribir buen código a menudo implica crear una fachada que revele lo necesario mientras protege la lógica central, al igual que los mitológicos guardianes de nuestras antiguas historias.