Curso de python nivel medio
¡Vamos a aprender sobre los diferentes tipos de métodos en Python: métodos de instancia, métodos estáticos, y métodos de clase!
1. Métodos de instancia
Los métodos de instancia son los métodos más comunes en Python. Estos métodos operan sobre una instancia específica de una clase, lo que significa que pueden acceder y modificar los atributos del objeto (la instancia). Para definir un método de instancia, el primer parámetro siempre debe ser self, que representa la instancia actual del objeto.
Ejemplo de método de instancia
1class Perro: 2 def __init__(self, nombre, edad): 3 self.nombre = nombre 4 self.edad = edad 5 6 def ladrar(self): 7 print(f"{self.nombre} está ladrando: ¡Guau, guau!") 8 9# Crear una instancia de la clase Perro 10mi_perro = Perro("Fido", 3) 11 12# Llamar al método de instancia 13mi_perro.ladrar()Salida de Consola!: Fido está ladrando: ¡Guau, guau!
- ¿Qué hace este código?:
- Define la clase
Perrocon un método de instancialadrar. - Este método usa
selfpara acceder al atributonombredel objetomi_perro. - Cuando llamas a
mi_perro.ladrar(), se ejecuta el métodoladrarpara esa instancia específica.
- Define la clase
2. Métodos estáticos
Los métodos estáticos son métodos que pertenecen a la clase en lugar de a una instancia específica de la clase. No tienen acceso a self ni a cls, por lo que no pueden modificar el estado de la instancia ni de la clase. Se utilizan para funciones que tienen una relación lógica con la clase, pero que no dependen de una instancia particular.
Para definir un método estático, se utiliza el decorador @staticmethod.
Ejemplo de método estático
1class Perro: 2 def __init__(self, nombre, edad): 3 self.nombre = nombre 4 self.edad = edad 5 6 @staticmethod 7 def mostrar_especie(): 8 print("Todos los perros son de la especie Canis lupus familiaris.") 9 10# Llamar al método estático 11Perro.mostrar_especie()Salida de Consola!: Todos los perros son de la especie Canis lupus familiaris.
- ¿Qué hace este código?:
- Define un método estático
mostrar_especieen la clasePerro. - Este método no necesita una instancia de la clase para ser llamado, ya que no usa
selfnicls. - Puedes llamarlo directamente desde la clase
Perro.
- Define un método estático
3. Métodos de clase
Los métodos de clase son métodos que afectan a toda la clase y no solo a una instancia específica. Estos métodos tienen acceso a la clase como un todo y pueden modificar los atributos de clase que son compartidos por todas las instancias. Para definir un método de clase, el primer parámetro debe ser cls, que representa la clase en sí.
Para definir un método de clase, se utiliza el decorador @classmethod.
Ejemplo de método de clase
1class Perro: 2 especie = "Canis lupus familiaris" # Atributo de clase 3 4 def __init__(self, nombre, edad): 5 self.nombre = nombre 6 self.edad = edad 7 8 @classmethod 9 def cambiar_especie(cls, nueva_especie): 10 cls.especie = nueva_especie 11 12 @classmethod 13 def mostrar_especie(cls): 14 print(f"La especie actual es: {cls.especie}") 15 16# Llamar al método de clase para mostrar la especie 17Perro.mostrar_especie() 18 19# Cambiar la especie usando un método de clase 20Perro.cambiar_especie("Canis familiaris") 21 22# Llamar al método de clase para mostrar la nueva especie 23Perro.mostrar_especie()Salida de Consola!: La especie actual es: Canis lupus familiaris La especie actual es: Canis familiaris
- ¿Qué hace este código?:
- Define un método de clase
cambiar_especieque cambia el atributo de claseespecie. - Define otro método de clase
mostrar_especiepara mostrar el valor actual del atributo de claseespecie. - Los métodos de clase se pueden llamar directamente desde la clase
Perroy afectan a toda la clase y a todas sus instancias.
- Define un método de clase
¿Cuándo usar cada tipo de método?
- Métodos de instancia (
def metodo(self)): Úsalos cuando necesites que el método opere en una instancia específica de la clase y acceda o modifique sus atributos. - Métodos estáticos (
@staticmethod def metodo()): Úsalos cuando la lógica del método esté relacionada con la clase, pero no necesites acceso a instancias ni a la clase en sí. - Métodos de clase (
@classmethod def metodo(cls)): Úsalos cuando necesites que el método opere en la clase en su conjunto y posiblemente modifique atributos de clase que afectan a todas las instancias.
Conclusión
En Python, puedes definir diferentes tipos de métodos según la naturaleza de la operación que necesitas realizar: métodos de instancia para trabajar con objetos individuales, métodos estáticos para funciones relacionadas con la clase pero sin dependencia de instancias, y métodos de clase para operaciones que afectan a la clase como un todo. ¡Practica usando estos tipos de métodos para ver cómo puedes diseñar clases más flexibles y organizadas en Python!
- Loading...