Curso de python nivel medio

¿Qué son los métodos públicos y privados?

En Python, los métodos son funciones definidas dentro de una clase que permiten a los objetos de esa clase realizar acciones o acceder a sus datos. Los métodos se pueden clasificar como públicos o privados dependiendo de cómo quieras que sean accesibles desde fuera de la clase:

  • Métodos públicos: Son accesibles desde cualquier lugar, tanto dentro como fuera de la clase. Estos son los métodos que normalmente utilizas para interactuar con los objetos.
  • Métodos privados: Son accesibles solo dentro de la clase donde se definen. Se utilizan para ocultar detalles de implementación que no deberían ser accesibles directamente desde fuera de la clase.

Métodos públicos

Los métodos públicos son los que defines normalmente. Cualquier código que tenga acceso al objeto puede llamar a estos métodos.

Ejemplo de métodos públicos

1class Coche:
2    def __init__(self, marca, modelo):
3        self.marca = marca
4        self.modelo = modelo
5
6    def encender(self):
7        print(f"El coche {self.marca} {self.modelo} está encendido.")
8
9    def apagar(self):
10        print(f"El coche {self.marca} {self.modelo} está apagado.")
11
12# Crear un objeto de la clase Coche
13mi_coche = Coche("Toyota", "Corolla")
14
15# Llamar a los métodos públicos
16mi_coche.encender()
17mi_coche.apagar()
Salida de Consola!:
El coche Toyota Corolla está encendido.
El coche Toyota Corolla está apagado.
  • ¿Qué hace este código?:
    • Define una clase Coche con dos métodos públicos: encender y apagar.
    • Cualquier código que tenga acceso al objeto mi_coche puede llamar a estos métodos para encender o apagar el coche.

Métodos privados

Para crear un método privado en Python, se antepone un doble guion bajo (__) al nombre del método. Esto indica que el método está destinado a ser utilizado solo dentro de la clase y no debería ser llamado desde fuera.

Ejemplo de métodos privados

1class Coche:
2    def __init__(self, marca, modelo):
3        self.marca = marca
4        self.modelo = modelo
5
6    def __verificar_combustible(self):
7        print("Verificando combustible...")
8
9    def encender(self):
10        self.__verificar_combustible()  # Llamada a un método privado desde un método público
11        print(f"El coche {self.marca} {self.modelo} está encendido.")
12
13    def apagar(self):
14        print(f"El coche {self.marca} {self.modelo} está apagado.")
15
16# Crear un objeto de la clase Coche
17mi_coche = Coche("Toyota", "Corolla")
18
19# Llamar a los métodos públicos
20mi_coche.encender()
21mi_coche.apagar()
22
23# Intentar llamar al método privado desde fuera de la clase (esto dará un error)
24# mi_coche.__verificar_combustible()  # Esto no funcionará
Salida de Consola!:
Verificando combustible...
El coche Toyota Corolla está encendido.
El coche Toyota Corolla está apagado.
  • ¿Qué hace este código?:

    • Define un método privado __verificar_combustible dentro de la clase Coche.
    • Este método solo se puede llamar dentro de otros métodos de la misma clase, como en encender.
    • Si intentas llamar al método privado __verificar_combustible desde fuera de la clase, recibirás un error.

    Si intentas descomentar la línea que llama al método privado desde fuera de la clase (mi_coche.__verificar_combustible()), recibirás un error como este:

1class Coche:
2    def __init__(self, marca, modelo):
3        self.marca = marca
4        self.modelo = modelo
5
6    def __verificar_combustible(self):
7        print("Verificando combustible...")
8
9    def encender(self):
10        self.__verificar_combustible()  # Llamada a un método privado desde un método público
11        print(f"El coche {self.marca} {self.modelo} está encendido.")
12
13    def apagar(self):
14        print(f"El coche {self.marca} {self.modelo} está apagado.")
15
16# Crear un objeto de la clase Coche
17mi_coche = Coche("Toyota", "Corolla")
18
19# Intentar llamar al método privado desde fuera de la clase (esto dará un error)
20mi_coche.__verificar_combustible()  # Esto no funcionará
Salida de Consola!:
AttributeError: 'Coche' object has no attribute '__verificar_combustible'

¿Por qué usar métodos privados?

  • Encapsulamiento: Los métodos privados ayudan a mantener los detalles internos de la clase ocultos, lo que es un principio fundamental de la programación orientada a objetos.
  • Seguridad: Previenen el acceso y modificación no intencionada de los datos o comportamientos internos de un objeto desde fuera de la clase.
  • Organización: Facilitan la gestión del código, separando la interfaz pública de la implementación interna.

Conclusión

En Python, los métodos públicos y privados te permiten controlar cómo se accede y manipula un objeto desde fuera de su clase. Los métodos públicos proporcionan una interfaz para interactuar con el objeto, mientras que los métodos privados ocultan los detalles internos de implementación que no deberían ser accesibles externamente. ¡Practica creando tus propias clases con métodos públicos y privados para entender mejor cómo controlar el acceso a los datos y comportamientos en tus programas!

  • Loading...