Encapsulación en Python - Variables de instancia y métodos

Tabla de contenido:

Anonim

Descripción general de la encapsulación en Python

La encapsulación es uno de los cuatro conceptos fundamentales de la programación orientada a objetos. Cuando existe un requisito para agrupar datos, y sus subrutinas posteriores que colaboran y funcionan en un solo lugar junto con la necesidad de ocultar los detalles complejos del usuario, utilizamos la encapsulación para comprender 'Encapsulación en Python', necesitamos profundizar y comprender cómo encapsulación entra en escena en un lenguaje de programación. Ayuda de encapsulación para restringir el acceso a métodos y variables. Prevenir cualquier modificación accidental de datos, y esto se logra utilizando los métodos de Variable de instancia no pública y Variable de instancia no pública. La clase encapsula los métodos y las variables.

Nombre Mangling en Python

Python implica una restricción en el acceso a los datos. No hay modificadores de acceso explícito, pero el acceso se puede controlar a través de Name Mangling en Python. Por defecto, todos los métodos y variables son públicos en Python. Entonces, si algún identificador tiene dos guiones bajos, se convierte en una instancia no pública en Python. Estaríamos especificando variables y métodos de instancia no pública aquí para comprender mejor la encapsulación. El alcance del método de instancia no pública está solo dentro de su propia clase, y comienza con un guión bajo o dos guiones bajos, es decir, un simple "_" o "__" doble antes de una variable o un método. El alcance de una variable de instancia no pública también está en su propia clase o por el método en el que se define y también comienza con dos guiones bajos. Si nos perdemos los dos guiones bajos, entonces ese método se considera un método público. Antes de comprender la encapsulación en Python, debemos comprender cómo funcionan las variables y métodos públicos y no públicos de instancia.

Variables de instancia no pública

En Python, no hay un término como "privado", ya que ningún atributo es realmente privado en Python (discutiremos la alternativa subyacente más adelante en el artículo). En cambio, los referimos como Variable de instancia no pública. Así es como referiríamos las variables privadas y los métodos privados de este modo.

Aquí hay un pequeño fragmento del código en python para variables de instancia no públicas:

Usamos la palabra clave self porque estamos accediendo a la variable de clase. El resultado es:

Para obtener una confirmación sobre el alcance de la variable de instancia no pública, agregamos la impresión (abc .__ a) al código:

Y la salida devuelta es:

Por lo tanto, vemos que no podemos usar variables de instancia no públicas fuera de la clase.

Métodos de instancia no pública

No se puede invocar una función de instancia no pública en el objeto directamente, sino solo dentro de la clase.

En este fragmento de código, tenemos dos métodos, una instancia no pública y otro método público. El método público se llama fácilmente creando un objeto de la clase abc y luego se imprime su salida.

Cuando se intenta un enfoque similar para el método de instancia no pública, nos enfrentamos al siguiente error:

Este programa producirá el siguiente resultado:

Por lo tanto, no es posible acceder a un método de instancia no pública mediante la creación de objetos. Para acceder al método de instancia no pública, podemos llamar al método __show1 () desde el método show2 () de la misma clase. Aquí es cómo podemos mostrar el método de instancia no pública desde el método público de la misma clase.

Salida:

Por lo tanto, el método de instancia no pública no se puede llamar fuera de su clase.

La forma indirecta de acceder a la variable de instancia no pública

Por razones legítimas, no se puede acceder a las variables de instancia no pública más allá de la clase, pero hay una forma indirecta de modificar el valor de la variable de instancia no pública y acceder mediante objetos. Echaremos un vistazo al siguiente fragmento de código:

Salida:

En el programa anterior tenemos métodos públicos getNumber (self, num) y displayNumber () y una variable de instancia no pública. Al llamar al primer método, asignamos el valor a la variable de instancia no pública, y eso se llama en el método displayNumber ().

El método setter se usa para establecer el valor de la variable de instancia no pública. Esto es útil en los escenarios en los que es posible que desee cambiar el valor de una variable de instancia no pública después de la creación de objetos para una variable específica.

Ventajas de la encapsulación en Python

La encapsulación ayuda a establecer un mejor flujo de datos, y también la protección de los datos. El concepto de encapsulación hace que el código sea autosuficiente. La encapsulación proporciona una gran ayuda a nivel de implementación, ya que se centra principalmente en la pregunta "cómo" dejando atrás el complejo "cuándo / dónde" y sus complejidades. Ocultar los datos en una unidad facilita la encapsulación y también asegura los datos.

¿Por qué necesitamos encapsulación en Python?

A continuación se detallan varias razones por las cuales los desarrolladores encontrarían útil el concepto de encapsulación y por qué los conceptos orientados a objetos son los que rigen en la mayoría de los lenguajes de programación que se ejecutan en el escenario actual.

  • Existe la necesidad de una interacción bien definida en cada aplicación, las encapsulaciones ayudan a lograrlo.
  • El concepto de Programación de Orientación de Objetos en python se enfoca en hacer código reutilizable. Esto también se abrevia como SECO (No se repita).
  • El mantenimiento de la aplicación es más fácil y hay seguridad garantizada.
  • Claridad en el procedimiento de codificación ya que los desarrolladores deben preocuparse por el objetivo de la clase y las complejidades se abordan sistemáticamente.
  • La organización adecuada de los códigos ayuda con la flexibilidad del código y también ayuda en las pruebas unitarias.
  • A los usuarios les resulta fácil usar el sistema, ya que están ocultos del complejo diseño involucrado en el backend.
  • Tener todos los datos similares en un solo lugar y encapsulados aumenta la cohesión dentro de un módulo.
  • Mejora la legibilidad de los códigos y los cambios en una parte del código no interrumpen otras partes del código.
  • La encapsulación evita que se acceda a la parte del código por accidente, pero no intencionalmente ya que los objetos contienen datos críticos para las aplicaciones y deben cambiarse en cualquier parte del código.

Conclusión: encapsulación en Python

En términos más simples, Encapsulación en Python significa que la representación interna de un objeto generalmente está oculta de la vista fuera de la definición del objeto. Esto ayuda al desarrollador a desarrollar una experiencia fácil de usar para el usuario final y hay protección contra una violación de seguridad a medida que los códigos se hacen seguros.

Artículos recomendados

Esta es una guía de encapsulación en Python. Aquí discutimos las necesidades de encapsulación en python junto con sus variables de instancia no pública y métodos de instancia. También puede consultar los siguientes artículos para obtener más información:

  1. ¿Qué es python?
  2. ¿Está Python orientado a objetos?
  3. Patrones en Python
  4. ¿Cómo usar la encapsulación en C ++?
  5. Encapsulación en Java | Ejemplos
  6. Encapsulación en C (trabajo, ejemplos)
  7. Introducción a la encapsulación en JavaScript