En Python, los métodos son funciones incluidas dentro de la definición de una clase.
Existen tres tipos de métodos, que se diferencian en cómo se definen y a qué tienen acceso:
Método de instancia: Se utiliza cuando el método necesita acceder o modificar datos específicos de una instancia
Método de clase: Se utiliza cuando el método necesita acceder a datos que pertenecen a toda la clase, como atributos de clase compartidos
Método estático: Se utiliza cuando el método no depende de datos de instancia o clase y realiza una operación independiente
Métodos de instancia
Los métodos de instancia son métodos que actúan sobre las instancias de una clase. Tienen acceso a los atributos de esas instancias a través del parámetro self.
Son los métodos más comunes en Python y se definen dentro de una clase utilizando def.
class Persona:
def __init__(self, nombre, edad):
self.nombre = nombre
self.edad = edad
def saludar(self):
return f"Hola, soy {self.nombre} y tengo {self.edad} años."
# Creación de instancia de persona
persona1 = Persona("Luis", 30)
# Llamada al método de instancia
print(persona1.saludar()) # Salida: Hola, soy Luis y tengo 30 años.En este ejemplo
saludar()es un método de instancia- Utiliza
selfpara acceder a los atributosnombreyedadde la instanciapersona1.
Métodos de clase
Los métodos de clase son métodos que actúan sobre la clase misma (en lugar de las instancias individuales de la clase).
Se definen utilizando el decorador @classmethod y tienen acceso a la clase a través del parámetro cls.
class Coche:
descuento = 0.1 # Descuento del 10% para todos los coches
def __init__(self, marca, modelo, precio):
self.marca = marca
self.modelo = modelo
self.precio = precio
@classmethod
def aplica_descuento(cls, precio):
return precio * (1 - cls.descuento)
# Uso del método de clase
precio_final = Coche.aplica_descuento(30000)
print(f"Precio final con descuento: ${precio_final}") # Salida: Precio final con descuento: $27000.0En este ejemplo,
aplica_descuento()es un método de clase- Utiliza
clspara acceder al atributo de clasedescuentoy aplicar un descuento al precio proporcionado.
Métodos estáticos
Los métodos estáticos son métodos que se relacionan con la clase pero no requieren acceso a sus atributos.
Se definen utilizando el decorador @staticmethod, y no dependen de la instancia (self) ni de la clase (cls).
class Utilidades:
@staticmethod
def sumar(a, b):
return a + b
# Uso del método estático
resultado = Utilidades.sumar(3, 5)
print(f"Resultado de la suma: {resultado}") # Salida: Resultado de la suma: 8En este ejemplo,
sumar()es un método estático que realiza una operación simple de suma sin necesidad de acceder a atributos de instancia o clase.