- 1

Fundamentos de Programación con Python para Principiantes
02:04 - 2

Instalación y Uso Básico de Python en Windows y Mac
08:10 - 3

Semántica y Sintaxis en Programación Python
10:15 - 4
Práctica: Te doy la bienvenida a los ejercicios interactivos
00:00 - 5

Manejo de Cadenas y Operaciones Básicas en Python
13:06 - 6

Tipos de Datos en Python: Enteros, Flotantes y Booleanos
07:22 - 7
Dominio de la función `print` en Python: usos y formatos avanzados
04:00 - 8

Operaciones matemáticas avanzadas en Python: módulo, potencia y más
11:01 - 9

Entrada de información y manejo de tipos de datos en Python
04:53
Herencia y Polimorfismo en Programación Orientada a Objetos
Clase 25 de 63 • Curso de Python
Contenido del curso
- 23

Programación Orientada a Objetos en Python: Clases y Métodos Básicos
14:11 - 24

Gestión de Biblioteca con Programación Orientada a Objetos
18:07 - 25

Herencia y Polimorfismo en Programación Orientada a Objetos
13:57 - 26

Programación Orientada a Objetos: Implementación de Clases y Herencia
13:10 - 27

Polimorfismo en Programación Orientada a Objetos
06:21 - 28

Herencia y Uso de la Función super() en Python
07:28 - 29
Programación Orientada a Objetos: Atributos, Métodos y `super()` en Python
05:06
- 37
Programación Avanzada en Python: POO, Excepciones y Proyectos
01:45 - 38

Escritura de Código Pytónico y Buenas Prácticas en Python
03:58 - 39

Comentarios y Docstrings: Buenas Prácticas en Programación
07:01 - 40

Tiempo de vida y alcance de variables en Python
14:11 - 41

Anotaciones de Tipo en Python para Código Más Legible
13:12 - 42

Validación de Tipos y Manejo de Excepciones en Python
13:05 - 43

Estructuras de Datos Avanzadas en Python: Collection y Enumeraciones
13:15
- 47

Uso de Métodos Mágicos en Python
06:47 - 48
Sobrecarga de Operadores en Python: Personaliza Comportamiento de Clases
04:18 - 49

Ejecutar scripts Python con `if __name__ == '__main__'`
05:42 - 50

Metaprogramación en Python: Métodos `__new__` y `__init__`
03:59 - 51

Uso de *args y **kwargs en funciones de Python
14:32 - 52

Métodos y Atributos Privados y Protegidos en Python
09:26 - 53

Uso de Property en Python: Getter, Setter y Eliminación de Atributos
07:56 - 54

Métodos estáticos y de clase en Python
07:46
El concepto de herencia en programación permite que una clase derive atributos y métodos de otra, facilitando la reutilización de código y la creación de estructuras jerárquicas lógicas. En este ejercicio, se aplica herencia para modelar una concesionaria que vende autos, bicicletas y camiones.
¿Cómo se crea la clase base para los vehículos?
Primero, se define una clase base llamada Vehículo, que contiene atributos comunes como marca, modelo, precio y disponibilidad. Los métodos básicos incluyen verificar disponibilidad, obtener el precio y vender el vehículo.
class Vehículo:
def __init__(self, marca, modelo, precio):
self.marca = marca
self.modelo = modelo
self.precio = precio
self.disponible = True
def vender(self):
if self.disponible:
self.disponible = False
print(f"El vehículo {self.marca} ha sido vendido.")
else:
print(f"El vehículo {self.marca} no está disponible.")
def estado(self):
return self.disponible
def get_price(self):
return self.precio
¿Cómo se implementa la herencia en las clases derivadas?
Las clases Auto, Bicicleta y Camión heredan de Vehículo. Cada una puede personalizar métodos específicos según sus necesidades.
class Auto(Vehículo):
def start(self):
if self.disponible:
return f"El motor del coche {self.marca} está en marcha."
else:
return f"El coche {self.marca} no está disponible."
def stop(self):
if self.disponible:
return f"El motor del coche {self.marca} se ha detenido."
else:
return f"El coche {self.marca} no está disponible."
¿Cómo se manejan las instancias de las clases en la concesionaria?
Se crean instancias de Auto, Cliente y Concesionaria para manejar el inventario y las ventas.
class Cliente:
def __init__(self, nombre):
self.nombre = nombre
self.autos = []
def comprar_auto(self, auto):
if auto.estado():
self.autos.append(auto)
auto.vender()
else:
print(f"El auto {auto.marca} no está disponible.")
class Concesionaria:
def __init__(self):
self.inventario = []
self.clientes = []
def añadir_auto(self, auto):
self.inventario.append(auto)
def registrar_cliente(self, cliente):
self.clientes.append(cliente)
def mostrar_disponibles(self):
for auto in self.inventario:
if auto.estado():
print(f"{auto.marca} {auto.modelo} está disponible por {auto.get_price()}.")
¿Cómo se aplican las operaciones en la concesionaria?
Finalmente, se crean instancias y se realizan operaciones para mostrar la funcionalidad del sistema.
# Crear autos
auto1 = Auto("Toyota", "Corolla", 20000)
auto2 = Auto("Honda", "Civic", 22000)
auto3 = Auto("Ford", "Mustang", 30000)
# Crear cliente
cliente = Cliente("Carlos")
# Crear concesionaria
concesionaria = Concesionaria()
concesionaria.añadir_auto(auto1)
concesionaria.añadir_auto(auto2)
concesionaria.añadir_auto(auto3)
concesionaria.registrar_cliente(cliente)
# Mostrar autos disponibles
concesionaria.mostrar_disponibles()
# Comprar auto
cliente.comprar_auto(auto1)
# Mostrar autos disponibles después de la compra
concesionaria.mostrar_disponibles()
¿Qué beneficios trae la herencia en este contexto?
- Reutilización de código: Las clases derivadas heredan atributos y métodos comunes.
- Mantenimiento: Facilita el mantenimiento y la actualización del código.
- Extensibilidad: Permite agregar nuevas clases derivadas con facilidad.