Tengo una duda, tengo entendido que los métodos set y get se crean para que se pueda acceder a las instancias con el “.” y así modificar ...

victor rodriguez

victor rodriguez

Pregunta
student
hace 5 años

Tengo una duda, tengo entendido que los métodos set y get se crean para que se pueda acceder a las instancias con el “.” y así modificar valores. Ahora, si en el main (y sin crear ningún set ni get) creamos una nueva instancia de la clase ya podemos acceder a los atributos del objeto con el operador “.” y setear los valores con una simple asignación. Entonces,¿para que crear los Setter y Getters si no son realmente necesarios?

2 respuestas
para escribir tu comentario
    jose zuñiga

    jose zuñiga

    student
    hace 5 años

    Bueno primero hay que entender que la finalidad de encapsular es la de proteger atributos que darán funcionalidad a nuestra clase (básicamente todo lo que no deseamos o no es necesario conocer por parte del usuario de la clase. ¡Hay que protegerlo!). Hay tres niveles de protección:

    • Public: Cualquier clase lo puede manipular
    • Protected: Lo pueden manipular solo clases del mismo tipo (hermanas)
    • Private: Solo lo manipula y accede desde la propia clase

    Estos niveles se entienden mejor con la herencia (próximas clases del curso). Los public siempre se heredan, los protegidos los usan clases hermanas y los private solo los usaran los padres.

    Ahora bien por convención para decir que un atributo es protegido usamos un guion bajo _atributo y dos para private __atributo. Sin embargo esto da una restricción de uso superficial que aún puede ser vulnerada fácilmente. Así que se usan decoradores para hacer que una función encapsule el atributo @property.

    Bueno aquí es donde entra en juego el asunto de set y get, al hacer que nuestro atributo este encapsulado, es necesario que podamos acceder de alguna manera al atributo, digamos que set y get son métodos públicos (cualquiera los puede usar), que al ser públicos si los pueden invocar desde otras clases y por medio de ellos podemos cambiar 'setter' o pedir un dato 'getter'. Los puedes ver como un puente que comunica el interior de la capsula con el exterior.

    Llegados a este punto uno puede decir: pero si oculto algo pero doy una manera de que cualquiera pueda ver y cambiar su contenido ¿para que este proceso tan tedioso?. Esto te lo respondo como novato en este mundo, como lo veo al tender el puente (setter y getter) te aseguras que solo tengas una sola vía por donde ingresar a tu capsula, así que es donde entra en juego los controles y restricciones que puedes agregar (claves y condicionales restrictivos). En la clase se usa la condición que la región a ingresar debe estar en la lista que se declaro para el objeto. Si no esta no te permitirá cambiar el dato.

    Bueno creo que me extendí demasiado, en la sección de preguntas deje un análisis de lo que entendí de esta clase, quizá te sirva.

Curso de POO y Algoritmos con Python

Curso de POO y Algoritmos con Python

Comprende la eficiencia algorítmica con Python. Analiza complejidad temporal y espacial, visualiza resultados y resuelve problemas de optimización. Ideal para desarrollar habilidades esenciales en el análisis de algoritmos.

Curso de POO y Algoritmos con Python
Curso de POO y Algoritmos con Python

Curso de POO y Algoritmos con Python

Comprende la eficiencia algorítmica con Python. Analiza complejidad temporal y espacial, visualiza resultados y resuelve problemas de optimización. Ideal para desarrollar habilidades esenciales en el análisis de algoritmos.