POO – Encapsulamiento

Cuando hablamos de encapsulación nos referimos generalmente a definir grados o niveles de acceso y modificación para nuestros métodos y atributos. En Python específicamente no existe como tal una ‘protección’ real hacía los atributos de una clase, ya q…


This content originally appeared on DEV Community and was authored by Nahuel Segovia

Cuando hablamos de encapsulación nos referimos generalmente a definir grados o niveles de acceso y modificación para nuestros métodos y atributos. En Python específicamente no existe como tal una 'protección' real hacía los atributos de una clase, ya que estos se pueden acceder de forma pública simplemente a través de la instancia. Lo que se hace para evitar que estos atributos sean cambiados es usar convenciones ya definidas por Python que nos permiten HACER SABER que esos atributos pueden ser accedidos solamente por la clase en la que se encuentran o por las clases que heredan de la misma:

self.__body < de esta forma, con dos guiones bajos, especificamos que únicamente vamos a poder acceder a este atributo estando dentro de la clase en la que se declaró,lo que se conoce como ACCESO PRIVADO

self._body < de esta forma, con un guion bajo, especificamos que la propiedad puede ser accedida tanto como la clase en donde fue declarada, como en las que hereden de esta, lo que se conoce como ACCESO PROTEGIDO

¿Por qué en Python no existe como tal una forma real de proteger a estos atributos?

  • Porque en realidad todos estos atributos son de acceso público, ya que podemos acceder a ellos y modificarlos a través de la instancia simplemente llamando a la misma clase:
post = Post('Titulo del post', 'contenido del post', 'programacion', 'Nahuel')

*Para el caso donde el acceso sea "PRIVADO" post.Post._title = 'Cambiando el valor del título'

*Para el caso donde el acceso sea "PROTEGIDO" post._Post._title = 'Cambiando el valor de título'

def __init__(self, title, body, hashtags, author):
        self._title = title
        self._body = body
        self._hashtags = hashtags
        self._author = author

    def get_name(self): return self._title
    def get_body(self): return self._body
    def get_hashtags(self): return self._hashtags
    def get_author(self): return self._author`


This content originally appeared on DEV Community and was authored by Nahuel Segovia


Print Share Comment Cite Upload Translate Updates
APA

Nahuel Segovia | Sciencx (2022-03-23T03:15:13+00:00) POO – Encapsulamiento. Retrieved from https://www.scien.cx/2022/03/23/poo-encapsulamiento/

MLA
" » POO – Encapsulamiento." Nahuel Segovia | Sciencx - Wednesday March 23, 2022, https://www.scien.cx/2022/03/23/poo-encapsulamiento/
HARVARD
Nahuel Segovia | Sciencx Wednesday March 23, 2022 » POO – Encapsulamiento., viewed ,<https://www.scien.cx/2022/03/23/poo-encapsulamiento/>
VANCOUVER
Nahuel Segovia | Sciencx - » POO – Encapsulamiento. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/03/23/poo-encapsulamiento/
CHICAGO
" » POO – Encapsulamiento." Nahuel Segovia | Sciencx - Accessed . https://www.scien.cx/2022/03/23/poo-encapsulamiento/
IEEE
" » POO – Encapsulamiento." Nahuel Segovia | Sciencx [Online]. Available: https://www.scien.cx/2022/03/23/poo-encapsulamiento/. [Accessed: ]
rf:citation
» POO – Encapsulamiento | Nahuel Segovia | Sciencx | https://www.scien.cx/2022/03/23/poo-encapsulamiento/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.