¿Qué es una clase?
¿Qué es una clase?
Una clase es como un "molde" o "plantilla" que define las características y comportamientos de un objeto.
# Definición básica de una clase
class Perro:
passAtributos y Métodos
Atributos (características)
class Perro:
# Atributo de clase (compartido por todas las instancias)
especie = "Canis lupus familiaris"
def __init__(self, nombre, edad):
# Atributos de instancia (únicos para cada objeto)
self.nombre = nombre
self.edad = edadMétodos (comportamientos)
class Perro:
def __init__(self, nombre, edad):
self.nombre = nombre
self.edad = edad
# Método de instancia
def ladrar(self):
return f"{self.nombre} dice: ¡Guau!"
def cumplir_anios(self):
self.edad += 1
return f"{self.nombre} ahora tiene {self.edad} años"Creando objetos (instancias)
# Crear instancias de la clase Perro
mi_perro = Perro("Rex", 3)
tu_perro = Perro("Luna", 2)
print(mi_perro.nombre) # Output: Rex
print(tu_perro.edad) # Output: 2
print(mi_perro.ladrar()) # Output: Rex dice: ¡Guau!Herencia
# Clase padre
class Animal:
def __init__(self, nombre):
self.nombre = nombre
def hacer_sonido(self):
return "Sonido genérico"
# Clase hija que hereda de Animal
class Gato(Animal):
def hacer_sonido(self):
return "¡Miau!"
def ronronear(self):
return "Purrrr..."
# Uso de la herencia
mi_gato = Gato("Whiskers")
print(mi_gato.hacer_sonido()) # Output: ¡Miau!
print(mi_gato.ronronear()) # Output: Purrrr...Métodos especiales
class Persona:
def __init__(self, nombre, edad):
self.nombre = nombre
self.edad = edad
# Método especial para representación en string
def __str__(self):
return f"Persona: {self.nombre}, {self.edad} años"
# Método especial para comparación
def __eq__(self, otro):
return self.nombre == otro.nombre and self.edad == otro.edad
persona1 = Persona("Ana", 25)
persona2 = Persona("Ana", 25)
print(persona1) # Output: Persona: Ana, 25 años
print(persona1 == persona2) # Output: TrueEncapsulación
class CuentaBancaria:
def __init__(self, titular, saldo_inicial=0):
self.titular = titular
self.__saldo = saldo_inicial # Atributo privado
# Getter
def get_saldo(self):
return self.__saldo
# Setter con validación
def depositar(self, cantidad):
if cantidad > 0:
self.__saldo += cantidad
return True
return False
def retirar(self, cantidad):
if 0 < cantidad <= self.__saldo:
self.__saldo -= cantidad
return True
return False
cuenta = CuentaBancaria("Juan", 1000)
cuenta.depositar(500)
print(cuenta.get_saldo()) # Output: 1500Ejemplo completo y práctico
class Libro:
def __init__(self, titulo, autor, paginas):
self.titulo = titulo
self.autor = autor
self.paginas = paginas
self.leido = False
def leer(self):
self.leido = True
return f"Has leído '{self.titulo}'"
def info(self):
estado = "leído" if self.leido else "por leer"
return f"'{self.titulo}' por {self.autor} - {self.paginas} páginas ({estado})"
# Crear objetos
libro1 = Libro("Cien años de soledad", "García Márquez", 417)
libro2 = Libro("1984", "George Orwell", 328)
print(libro1.info()) # Output: 'Cien años de soledad' por García Márquez - 417 páginas (por leer)
libro1.leer()
print(libro1.info()) # Output: ... (leído)Ventajas de usar clases:
Organización: Código más estructurado y mantenible
Reutilización: Puedes crear múltiples objetos de la misma clase
Modularidad: Cada clase tiene una responsabilidad específica
Abstracción: Ocultas la complejidad interna
¿Te gustaría que profundice en algún aspecto específico de las clases?
Comentarios
Publicar un comentario