Los métodos son funciones definidas dentro de una clase. Describen el comportamiento del objeto y pueden acceder y modificar sus atributos.
class Persona:
def __init__(self, nombre):
self.nombre = nombre
def saludar(self):
print(f"Hola, mi nombre es {self.nombre}")
El primer parámetro de un método siempre debe ser self
, que hace referencia a la instancia actual.
Acceder a Atributos y Métodos:
Una vez creado un objeto, podemos acceder a sus atributos y métodos usando la notación de punto (.
):
persona1 = Persona("Carlos")
print(persona1.nombre) # Acceder a atributo
persona1.saludar() # Llamar a método
Tipos de Métodos:
Python permite definir tres tipos de métodos dentro de una clase:
1. Métodos de Instancia:
Son los métodos más comunes. Reciben como primer parámetro self
y pueden acceder y modificar los atributos de instancia.
class Ejemplo:
def metodo_instancia(self):
print("Soy un método de instancia")
2. Métodos de Clase (@classmethod):
Reciben como primer parámetro cls
, hace referencia a la clase en sí (no a la instancia). Se utilizan para modificar atributos de clase o crear instancias alternativas.
class Ejemplo:
contador = 0
@classmethod
def incrementar_contador(cls):
cls.contador += 1
3. Métodos Estáticos (@staticmethod):
No reciben ni self
ni cls
. Funcionan como funciones comunes, pero están dentro del ámbito de una clase.
class Ejemplo:
@staticmethod
def saludar():
print("Hola desde un método estático")
Se suelen usar cuando la función tiene una relación lógica con la clase pero no necesita acceder ni a sus atributos ni a sus métodos.
Métodos Especiales:
Python incluye varios métodos especiales, que permiten personalizar el comportamiento de las clases.
__init__()
: Constructor del objeto. Se explicó anteriormente.__str__()
: Devuelve una representación en forma de cadena del objeto. Se invoca automáticamente al imprimir el objeto conprint()
.
class Persona:
def __init__(self, nombre):
self.nombre = nombre
def __str__(self):
return f"Persona: {self.nombre}"
__del__()
: Destructor del objeto. Se invoca cuando el objeto es eliminado por el recolector de basura.
class Persona:
def __del__(self):
print("Objeto destruido")
Implementaciones:
Cuando se llama un método, internamente se ejecuta una implementación, es decir, el código asociado que realiza una acción específica.
Una implementación puede:
- Modificar el estado del objeto (atributos).
- Devolver información procesada al exterior.
- Invocar otros métodos o funciones.
- Interactuar con otras clases u objetos.
Las buenas prácticas de diseño sugieren separar la interfaz de una clase (sus métodos públicos) de la implementación (el código interno), facilitando el mantenimiento y la comprensión del código.