Las clases
1. Qué es una clase? #
Una clase es una estructura fundamental en la programación orientada a objetos que te permite crear tus propios tipos de datos. Las clases definen un "molde" o "plantilla" a partir de la cual se pueden crear objetos. Un objeto es una instancia de una clase, y puede tener atributos (datos) y métodos (funciones) que operan sobre esos datos.
2. Cómo se define una clase en Python? #
Para definir una clase en Python, se usa la palabra clave class, seguida del nombre de la clase y dos puntos. El código que define los atributos y métodos de la clase va indentado debajo de la declaración de la clase.
3. Estructura básica de una clase #
1class NombreDeLaClase: 2 def __init__(self, parametro1, parametro2): 3 # Este es el método inicializador (constructor) 4 self.atributo1 = parametro1 5 self.atributo2 = parametro2 6 7 def metodo(self): 8 # Este es un método de la clase 9 print(f"El atributo1 es {self.atributo1}")
4. Ejemplos de uso de clases #
Crear una clase simple #
1class Perro: 2 def __init__(self, nombre, raza): 3 self.nombre = nombre 4 self.raza = raza 5 6 def ladrar(self): 7 print(f"{self.nombre} está ladrando: ¡Guau, guau!") 8 9# Crear un objeto de la clase Perro 10mi_perro = Perro("Fido", "Labrador") 11 12# Usar los métodos y atributos del objeto 13print(f"Mi perro se llama {mi_perro.nombre} y es un {mi_perro.raza}.") 14mi_perro.ladrar()Salida de consola Mi perro se llama Fido y es un Labrador. Fido está ladrando: ¡Guau, guau!
- ¿Qué hace este código?:
- Define una clase
Perrocon un método especial__init__, que es el constructor de la clase. Este método se llama automáticamente cuando creas un nuevo objeto de la clase. - La clase
Perrotiene dos atributos (nombreyraza) y un método (ladrar) que imprime un mensaje. - Se crea un objeto
mi_perrode la clasePerro, se accede a sus atributos y se llama al métodoladrar.
- Define una clase
Crear otra clase con métodos adicionales #
1class Coche: 2 def __init__(self, marca, modelo, anio): 3 self.marca = marca 4 self.modelo = modelo 5 self.anio = anio 6 self.encendido = False 7 8 def encender(self): 9 if not self.encendido: 10 self.encendido = True 11 print(f"El coche {self.marca} {self.modelo} está encendido.") 12 else: 13 print(f"El coche {self.marca} {self.modelo} ya está encendido.") 14 15 def apagar(self): 16 if self.encendido: 17 self.encendido = False 18 print(f"El coche {self.marca} {self.modelo} está apagado.") 19 else: 20 print(f"El coche {self.marca} {self.modelo} ya está apagado.") 21 22# Crear un objeto de la clase Coche 23mi_coche = Coche("Toyota", "Corolla", 2020) 24 25# Usar los métodos y atributos del objeto 26print(f"Tengo un {mi_coche.marca} {mi_coche.modelo} del año {mi_coche.anio}.") 27mi_coche.encender() 28mi_coche.apagar()Salida de consola Tengo un Toyota Corolla del año 2020. El coche Toyota Corolla está encendido. El coche Toyota Corolla está apagado.
- ¿Qué hace este código?:
- Define una clase
Cochecon atributosmarca,modelo,anioyencendido. - La clase tiene métodos
encenderyapagarque controlan si el coche está encendido o apagado, e imprimen un mensaje apropiado. - Se crea un objeto
mi_cochede la claseCochey se llaman los métodosencenderyapagar.
- Define una clase
5. Por qué usar clases? #
Las clases son útiles porque:
- Organizan el código en torno a objetos del mundo real, como coches, perros, o cuentas bancarias.
- Reutilizan código a través de la creación de objetos múltiples a partir de la misma clase.
- Agrupan datos y comportamientos relacionados, lo que hace que el código sea más fácil de entender y mantener.
Resumen del tema
Conceptos clave #
- Clases e Instancias: una clase es el molde/plantilla (
class MiClase:) y un objeto es la instancia concreta en memoria. - Método Inicializador
__init__: constructor que inicializa los atributos del objeto al instanciarlo. - Parámetro
self: referencia explícita a la instancia concreta actual sobre la que se ejecutan los métodos y se almacenan los atributos. - Encapsulamiento de Estado y Comportamiento: reúne datos (atributos) y operaciones lógicas (métodos) en una única entidad cohesiva.
Qué debes recordar #
Las clases definen plantillas para crear objetos con estado (atributos) y comportamiento (métodos), usando __init__ y self para inicializar instancias.