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
self
para acceder a los atributosnombre
yedad
de 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.0
En este ejemplo,
aplica_descuento()
es un método de clase- Utiliza
cls
para acceder al atributo de clasedescuento
y 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: 8
En 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.