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
Cochecon dos métodos públicos:encenderyapagar. - Cualquier código que tenga acceso al objeto
mi_cochepuede llamar a estos métodos para encender o apagar el coche.
- Define una clase
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_combustibledentro de la claseCoche. - 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_combustibledesde 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: - Define un método privado
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...