in

Encapsulación en Python – GeeksforGeeks

gfg 200x200 min

La encapsulación es uno de los conceptos fundamentales en la programación orientada a objetos (POO). Describe la idea de empaquetar datos y los métodos que funcionan con datos dentro de una unidad. Esto impone restricciones al acceso directo a variables y métodos y puede evitar la modificación accidental de datos. Para evitar cambios accidentales, la variable de un objeto solo se puede cambiar mediante el método de un objeto. Esos tipos de variables se conocen como variable privada.
Una clase es un ejemplo de encapsulación, ya que encapsula todos los datos que son funciones miembro, variables, etc.

encapsulation in python

Considere un ejemplo de encapsulación de la vida real, en una empresa, hay diferentes secciones como la sección de cuentas, la sección de finanzas, la sección de ventas, etc. La sección de finanzas maneja todas las transacciones financieras y mantiene registros de todos los datos relacionados con las finanzas. Del mismo modo, la sección de ventas maneja todas las actividades relacionadas con las ventas y mantiene registros de todas las ventas. Ahora puede surgir una situación en la que, por alguna razón, un funcionario de la sección de finanzas necesite todos los datos sobre las ventas en un mes en particular. En este caso, no se le permite acceder directamente a los datos de la sección de ventas. Primero tendrá que ponerse en contacto con algún otro funcionario de la sección de ventas y luego solicitarle que proporcione los datos particulares. Esto es la encapsulación. Aquí los datos de la sección de ventas y los empleados que pueden manipularlos se envuelven bajo un solo nombre «sección de ventas». El uso de encapsulación también oculta los datos. En este ejemplo, los datos de las secciones como ventas, finanzas o cuentas están ocultos de cualquier otra sección.

Miembros protegidos

Los miembros protegidos (en C ++ y JAVA) son aquellos miembros de la clase a los que no se puede acceder fuera de la clase, pero se puede acceder desde dentro de la clase y sus subclases. Para lograr esto en Python, simplemente siga la Convención prefijando el nombre del miembro con un guión bajo simple «_».
Nota: El método __init__ es un constructor y se ejecuta tan pronto como se crea una instancia de un objeto de una clase.

Python3

class Base:

    def __init__(self):

        

        

        self._a = 2

class Derived(Base):

    def __init__(self):

        

        

        

        Base.__init__(self)

        print("Calling protected member of base class: ")

        print(self._a)

obj1 = Derived()

        

obj2 = Base()

print(obj2.a)

Producción:

Calling protected member of base class: 
2
Traceback (most recent call last):
  File "/home/6fb1b95dfba0e198298f9dd02469eb4a.py", line 25, in 
    print(obj1.a)
AttributeError: 'Base' object has no attribute 'a'

Miembros privados

Los miembros privados son similares a los miembros protegidos, la diferencia es que los miembros de la clase declarados privados no deben ser accedidos fuera de la clase ni por ninguna clase base. En Python, no existe Privado variables de instancia a las que no se puede acceder excepto dentro de una clase. Sin embargo, para definir un miembro privado prefija el nombre del miembro con doble subrayado “__”.

Nota: Se puede acceder al miembro privado y protegido de Python fuera de la clase a través de la manipulación de nombres de Python.

Python3

class Base:

    def __init__(self):

        self.a = "GeeksforGeeks"

        self.__c = "GeeksforGeeks"

class Derived(Base):

    def __init__(self):

        

        

        

        Base.__init__(self)

        print("Calling private member of base class: ")

        print(self.__c)

obj1 = Base()

print(obj1.a)

Producción:

GeeksforGeeks


Traceback (most recent call last):
  File "/home/f4905b43bfcf29567e360c709d3c52bd.py", line 25, in <module>
    print(obj1.c)
AttributeError: 'Base' object has no attribute 'c'

Traceback (most recent call last):
  File "/home/4d97a4efe3ea68e55f48f1e7c7ed39cf.py", line 27, in <module>
    obj2 = Derived()
  File "/home/4d97a4efe3ea68e55f48f1e7c7ed39cf.py", line 20, in __init__
    print(self.__c)
AttributeError: 'Derived' object has no attribute '_Derived__c'


¡Atención geek! Fortalece tus cimientos con el Fundación de programación de Python Curso y aprende los conceptos básicos.

Para empezar, los preparativos de su entrevista Mejore sus conceptos de estructuras de datos con el Python DS Curso. Y para comenzar con su viaje de aprendizaje automático, únase al Aprendizaje automático – Curso de nivel básico

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

apple touch icon@2

linux – ¿Cómo funciona «cat

350px Gallstone

Cálculo biliar vs cálculo renal: diferencia y comparación