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 Perro con un método de instancia ladrar.
    • Este método usa self para acceder al atributo nombre del objeto mi_perro.
    • Cuando llamas a mi_perro.ladrar(), se ejecuta el método ladrar para esa instancia específica.

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_especie en la clase Perro.
    • Este método no necesita una instancia de la clase para ser llamado, ya que no usa self ni cls.
    • Puedes llamarlo directamente desde la clase Perro.

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_especie que cambia el atributo de clase especie.
    • Define otro método de clase mostrar_especie para mostrar el valor actual del atributo de clase especie.
    • Los métodos de clase se pueden llamar directamente desde la clase Perro y afectan a toda la clase y a todas sus instancias.

¿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...