Clases y Objetos

Métodos


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 con print().
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.