Encapsulación de pitón

Encapsulación de pitón

Introducción

La encapsulación es uno de los aspectos fundamentales de la programación orientada a objetos. Permite a los programadores un mejor control de cómo fluye los datos en sus programas, y protege esos datos. La encapsulación también convierte objetos en piezas más autosuficientes e independientemente que funcionan.

El concepto de encapsulación se basa en lo que hizo en las dos últimas guías con clases y constructores. Los constructores generalmente se usan en estrecha conjunción con la encapsulación y en realidad ayudan a hacer que la encapsulación funcione sin problemas.

Modificadores de acceso

Antes de aprovechar la encapsulación, debe comprender cómo Python restringe el acceso a los datos almacenados en variables y métodos.

Python tiene diferentes niveles de restricción que controlan cómo se puede acceder a los datos y desde donde. Las variables y los métodos pueden ser públicos, privados o protegidos. Esas designaciones se realizan por el número de subrayos antes de la variable o el método.

Público

Cada variable y método que ha visto hasta ahora con la excepción de los constructores ha sido pública. Las variables y métodos públicos se pueden modificar libremente y funcionar desde cualquier lugar, ya sea dentro o fuera de la clase. Para crear una variable o método público, no use ningún subrayador.

Privado

La designación privada solo permite acceder a una variable o método desde su propia clase u objeto. No puede modificar el valor de una variable privada desde fuera de una clase. Las variables y los métodos privados son precedidos por dos subrayos. Eche un vistazo al ejemplo a continuación.

__make = 'Dodge'

Intenta usar esa clase de antes. Establezca las variables en el constructor en privado. Luego intente imprimir una de las variables después de que un objeto haya sido instanciado.

Class Car (objeto): def __init __ (self, make = 'ford', model = 'Pinto', año = '1971', millaee = '253812', color = 'naranja'): self.__make = hacerse yo.__model = modelo yo.__ años = año yo.__mileage = kilometraje.__color = color def move_forward (self, velocidad): imprime ("su %s está avanzando en %s" %(self.__modelo, velocidad)) def move_backward (self, velocidad): imprimir ("moverse hacia atrás en % s" % velocidad) mycar = car () imprime (mycar.__modelo) 

Recibirá un mensaje de error que indica que la variable no existe. Esto se debe a que esa variable es privada. Ahora intente ejecutar el Move_Forward método.

mi coche.Move_Forward

Todo funciona bien. Esto se debe a que la variable está siendo accedida por un método dentro de la clase, no externamente.

Hay una captura aquí. Python no maneja exactamente variables protegidas, así como otros idiomas orientados a objetos. En lugar de proteger las variables, cambia el nombre de ellas dentro del intérprete. Esto permite que se creen y existan diferentes copias de la variable. Intente cambiar una de las variables protegidas en su mi coche objeto e imprimiéndolo.

mi coche.__model = 'Mustang' Impresión (Mycar.__modelo) 

Ahora, parece funcionar, pero lo que ha imprimido es una copia extraña de la variable protegida. Intenta usar el Move_Forward método nuevamente.

mi coche.Move_Forward

Imprimió el valor original de __modelo. Las variables existen de forma independiente. Puede ilustrar esto imprimiendo el objeto como un diccionario. Verás dos variables diferentes.

Imprimir (Mycar.__dict__)

Protegido

Las variables y métodos protegidos son muy similares a las privadas. Probablemente no use variables o métodos protegidos muy a menudo, pero todavía vale la pena saber qué son. Una variable que está protegida solo puede ser accedida por su propia clase y cualquier clases derivada de ella. Ese es más un tema para más adelante, pero tenga en cuenta que si está utilizando una clase como base de otra, las variables protegidas pueden ser una buena opción. Las variables protegidas comienzan con un solo bajo.

Que es la encapsulación

Entonces, ahora que sabes cómo funcionan los modificadores de acceso, la próxima parte parecerá bastante obvio. La encapsulación es el proceso de usar variables privadas dentro de las clases para evitar modificaciones de datos no intencionales o potencialmente maliciosas. Al contener y proteger las variables dentro de una clase, permite que la clase y los objetos que crea funcione como piezas independientes, autónomas, que funcionan dentro de la máquina del programa en sí.

A través de variables de encapsulación y ciertos métodos solo pueden interactuarse a través de las interfaces designadas por la clase misma.

Setters y Getters

Las interfaces que se utilizan para interactuar con variables encapsuladas generalmente se denominan métodos setter y getter porque se utilizan para establecer y recuperar los valores de las variables. Debido a que existen métodos dentro de una clase u objeto, pueden acceder y modificar variables privadas, mientras que no podrá hacerlo desde fuera de la clase. Cuando instanciaron su mi coche Objeto, esencialmente usó su constructor como método inicial de setter.

Intente escribir un conjunto de métodos para establecer y obtener el valor de uno de los mi coche variables.

def set_model (self, new_model): self.__model = new_model def get_model (self): return self.__modelo 

Puede parecer mucho trabajo extra, pero en realidad no es difícil en absoluto. En términos generales, así es como debe estructurar sus clases y trabajar con variables de clase.

Pensamientos de cierre

La encapsulación es una parte importante de la programación orientada a objetos. Es una gran parte de lo que hace que los objetos en la programación funcionen más como objetos físicos en el mundo real. También sirve para proteger los datos almacenados dentro de sus objetos y proporciona control y convenciones sobre cómo debe manejar el flujo de datos dentro y fuera de las clases.

Ejercicios

  1. Hacer todas las variables en el Auto clase privada.
  2. Intenta imprimir uno desde fuera de la clase.
  3. Modificar el Move_Forward Método para usar la variable privada modelo, y llámalo.
  4. Crear un método de setter para una de las variables.
  5. Use el método setter que creó para cambiar el valor de una variable.
  6. Cree un método getter para la misma variable que el método setter.
  7. Use su método Getter para acceder e imprimir esa variable.

Tutoriales de Linux relacionados:

  • Cosas para instalar en Ubuntu 20.04
  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Cómo construir una aplicación Tkinter utilizando un objeto orientado ..
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Mastering Bash Script Loops
  • Ubuntu 20.04 trucos y cosas que quizás no sepas
  • Cosas para instalar en Ubuntu 22.04
  • Mint 20: Mejor que Ubuntu y Microsoft Windows?
  • Ubuntu 20.04 Guía
  • Conceptos básicos de matemáticas de la computadora: binaria, decimal, hexadecimal, octal