Herencia básica
Parte de la sección Programación orientada a objetos del Journey de Python de Coddy. Lección 17 de 64.
La herencia permite que una clase herede atributos y métodos de otra clase, creando una relación entre padre e hijo.
Aquí tienes un ejemplo de una clase padre:
class Animal:
def __init__(self, name):
self.name = name
def info(self):
print(f"I am {self.name}, an animal")Crea una clase hija que herede de la clase padre:
class Dog(Animal):
pass # Hereda todo de AnimalLa sintaxis class Dog(Animal): significa que Dog hereda de Animal. Pon el nombre de la clase padre entre paréntesis.
Crea objetos de ambas clases:
generic_animal = Animal("Creature")
buddy = Dog("Buddy")Usa los métodos heredados:
generic_animal.info()
buddy.info()Salida:
I am Creature, an animal
I am Buddy, an animalAunque Dog no define __init__ ni info, los obtiene automáticamente de Animal.
Puedes añadir nuevos métodos a la clase hija:
class Dog(Animal):
def bark(self):
print(f"{self.name} says Woof!")
buddy = Dog("Buddy")
buddy.info() # Método heredado
buddy.bark() # Método nuevoSalida:
I am Buddy, an animal
Buddy says Woof!Punto clave: Las clases hijas heredan todos los atributos y métodos de su clase padre. Usa la sintaxis class Child(Parent): para crear una herencia. Esto te ayuda a reutilizar código y crear jerarquías lógicas de clases.
Desafío
Intermediovehicle.py: Contiene la clase padreVehiclecar.py: Contiene la claseCar, que hereda deVehicledriver.py: Archivo principal para probar tu implementación
Cada archivo contiene comentarios detallados de TODO para guiarte durante la implementación. Tendrás que:
- Completar la clase
Vehiclecon atributos make y model - Implementar la herencia de clases correctamente en la clase
Car - Configurar las instrucciones de importación correctas entre archivos
- Crear y probar objetos en el archivo driver
Sigue atentamente los comentarios de TODO, ya que te proporcionan una guía paso a paso para llegar a la solución.
Pruébalo tú mismo
# TODO: Importa la clase Vehicle desde vehicle.py
# TODO: Importa la clase Car desde car.py
# TODO: Crea un objeto Vehicle con make "Toyota" y model "Corolla"
vehicle = None
# TODO: Crea un objeto Car con make "Honda" y model "Civic"
car = None
# TODO: Llama al método display_info() del objeto vehicle
# Salida esperada: "Vehicle: Toyota Corolla"
# TODO: Llama al método display_info() del objeto car
# Salida esperada: "Vehicle: Honda Civic"
# Nota: Car hereda display_info de Vehicle sin modificacionesEsta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Programación orientada a objetos
1Fundamentos de la POO
Introducción a la POOArchivos externosClases vs. objetosEl parámetro selfMétodosAtributosMétodo constructor (__init__)Repaso: calculadora sencilla4Herencia
Herencia básicaLa función super()Sobrescritura de métodosHerencia múltipleOrden de resolución de métodosRepaso: jerarquía de empleados7Métodos especiales
Introducción a los métodos mágicosSobrecarga de operadoresMétodos mágicos de contenedoresRepaso: lista personalizada10Patrones de diseño, parte 1
Introducción a los patrones de diseñoPatrón SingletonPatrón FactoryPatrón ObserverPatrón Strategy2Decoradores
Introducción a los decoradoresDecorador de propiedadDecorador de método estáticoDecorador de método de clase5Polimorfismo
Repaso de la sobrescritura de métodosTipado patoClases y métodos abstractosDiseño de interfacesRepaso: calculadora de formas8Conceptos avanzados de POO
Composición frente a herenciaMixinsMétodos estáticos y de claseDecoradores de claseGestores de contexto11Patrones de diseño, parte 2
Patrón CommandPatrón AdapterPatrón DecoratorPatrón Template MethodPatrón StatePatrón Composite3Propiedades de clase
Variables de instancia vs. variables de claseDecoradores de propiedadesAtributos privadosRepaso: gestor de cuentas bancariasPractica por tu cuenta: Compilador de Python online