Categorías
Curso Python

Clases en Python

Las clases en Python permiten crear objetos que encapsulan datos y funcionalidades. Son fundamentales para la programación orientada a objetos y permiten modelar entidades del mundo real de una manera más organizada y modular. Aquí hay una explicación detallada de las clases con ejemplos originales y congruentes.

Clases básicas

class MiPersonaVacia:
    pass

print(MiPersonaVacia)
print(MiPersonaVacia())

Definimos una clase vacía llamada MiPersonaVacia usando la palabra clave class. La palabra clave pass se utiliza para indicar que la clase no tiene contenido por ahora.

Ejemplo adicional:

class VehiculoVacio:
    pass

print(VehiculoVacio)
print(VehiculoVacio())

Clases con constructores y atributos

class Persona:
    def __init__(self, nombre, apellido):
        self.nombre = nombre
        self.apellido = apellido

mi_persona = Persona("Ana", "Martínez")

print(f"{mi_persona.nombre} {mi_persona.apellido}")

Definimos una clase Persona con un constructor (init), que inicializa los atributos nombre y apellido. Luego, creamos una instancia de la clase y accedemos a sus atributos.

Ejemplo adicional:

class Coche:
    def __init__(self, marca, modelo):
        self.marca = marca
        self.modelo = modelo

mi_coche = Coche("Toyota", "Corolla")

print(f"{mi_coche.marca} {mi_coche.modelo}")

Clases con valores predeterminados

class PersonaConParametros:
    def __init__(self):
        self.nombre = "Carlos"
        self.apellido = "Ruiz"

mi_persona_con_parametros = PersonaConParametros()

print(f"{mi_persona_con_parametros.nombre} {mi_persona_con_parametros.apellido}")

En esta clase PersonaConParametros, los atributos nombre y apellido se inicializan con valores predeterminados dentro del constructor.

Ejemplo adicional:

class Ordenador:
    def __init__(self):
        self.marca = "HP"
        self.procesador = "Intel i7"

mi_ordenador = Ordenador()

print(f"{mi_ordenador.marca} con procesador {mi_ordenador.procesador}")

Métodos en clases

class Perro:
    def __init__(self, nombre):
        self.nombre = nombre

    def caminar(self):
        print(f"{self.nombre} está caminando")

mi_perro = Perro("Max")
mi_perro.caminar()

La clase Perro tiene un método caminar que imprime un mensaje utilizando el atributo nombre del objeto.

Ejemplo adicional:

class Gato:
    def __init__(self, nombre):
        self.nombre = nombre

    def maullar(self):
        print(f"{self.nombre} está maullando")

mi_gato = Gato("Luna")
mi_gato.maullar()

Valores por defecto en el constructor

class Perro:
    def __init__(self, nombre="Buddy"):
        self.nombre = nombre

    def caminar(self):
        print(f"{self.nombre} está caminando")

mi_perro = Perro()
mi_perro.caminar()

La clase Perro tiene un valor por defecto Buddy para el atributo nombre. Si no se proporciona un nombre al crear el objeto, se usa el valor por defecto.

Ejemplo adicional:

class Bicicleta:
    def __init__(self, marca="Giant"):
        self.marca = marca

    def pedalear(self):
        print(f"La bicicleta {self.marca} está pedaleando")

mi_bicicleta = Bicicleta()
mi_bicicleta.pedalear()

Cambiando el valor por defecto

class Perro:
    def __init__(self, nombre="Buddy"):
        self.nombre = nombre

    def caminar(self):
        print(f"{self.nombre} está caminando")

mi_perro = Perro("Rex")
mi_perro.caminar()

Aunque la clase Perro tiene un valor por defecto para el atributo nombre, este puede ser sobrescrito al crear el objeto pasando un valor diferente.

Ejemplo adicional:

class Avion:
    def __init__(self, aerolinea="Delta"):
        self.aerolinea = aerolinea

    def volar(self):
        print(f"El avión de {self.aerolinea} está volando")

mi_avion = Avion("American Airlines")
mi_avion.volar()

Conclusión
Las clases en Python son una herramienta poderosa para estructurar y organizar el código de manera modular y reutilizable. Permiten encapsular datos y funciones relacionadas en un solo lugar, lo que facilita la creación de programas complejos y bien organizados. Los ejemplos proporcionados muestran cómo definir clases, constructores, métodos y trabajar con valores predeterminados, lo que cubre una variedad de escenarios útiles en la programación orientada a objetos en Python.