Herencia básica
Parte de la sección Object Oriented Programming 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 padre-hijo.
Aquí hay 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 del padre:
class Dog(Animal):
pass # Hereda todo de AnimalLa sintaxis class Dog(Animal): significa que Dog hereda de Animal. Coloca el nombre de la clase padre entre paréntesis.
Crea objetos de ambas clases:
generic_animal = Animal("Creature")
buddy = Dog("Buddy")Utiliza los métodos heredados:
generic_animal.info()
buddy.info()Salida:
I am Creature, an animal
I am Buddy, an animalAunque Dog no define __init__ o 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() # Nuevo métodoSalida:
I am Buddy, an animal
Buddy says Woof!Punto clave: Las clases hijas heredan todos los atributos y métodos de su clase padre. Utiliza la sintaxis class Child(Parent): para crear herencia. Esto te ayuda a reutilizar código y crear jerarquías de clases lógicas.
Desafío
Intermediovehicle.py: Contiene la clase padreVehiclecar.py: Contiene la claseCarque hereda deVehicledriver.py: Archivo principal para probar tu implementación
Cada archivo contiene comentarios TODO detallados para guiarte a través de la implementación. Necesitarás:
- Completar la clase
Vehiclecon los atributosmakeymodel - Implementar la herencia de clases adecuada en la clase
Car - Configurar las sentencias de importación correctas entre archivos
- Crear y probar objetos en el archivo driver
Sigue los comentarios TODO cuidadosamente, ya que proporcionan una guía paso a paso para la solución.
Hoja de referencia
La herencia permite que una clase herede atributos y métodos de otra clase utilizando la sintaxis class Child(Parent)::
class Animal:
def __init__(self, name):
self.name = name
def info(self):
print(f"I am {self.name}, an animal")
class Dog(Animal):
pass # Hereda todo de AnimalLas clases hijas heredan automáticamente todos los métodos y atributos del padre:
buddy = Dog("Buddy")
buddy.info() # Usa el método heredado
# Salida: I am Buddy, an animalAgregue nuevos métodos a las clases hijas manteniendo la funcionalidad heredada:
class Dog(Animal):
def bark(self):
print(f"{self.name} says Woof!")
buddy = Dog("Buddy")
buddy.info() # Método heredado
buddy.bark() # Nuevo métodoPruébalo tú mismo
# TODO: Importar la clase Vehicle desde vehicle.py
# TODO: Importar la clase Car desde car.py
# TODO: Crear un objeto Vehicle con marca "Toyota" y modelo "Corolla"
vehicle = None
# TODO: Crear un objeto Car con marca "Honda" y modelo "Civic"
car = None
# TODO: Llamar al método display_info() en el objeto vehicle
# Salida esperada: "Vehicle: Toyota Corolla"
# TODO: Llamar al método display_info() en el 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 Object Oriented Programming
1Fundamentos de la POO
Archivos externosIntroducción a la POOClases vs ObjetosEl parámetro selfMétodosAtributosMétodo constructor (__init__)Resumen - Calculadora simple4Herencia
Herencia básicaLa función super()Sobrescritura de métodosHerencia múltipleOrden de resolución de métodosResumen - 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 propertyDecorador de métodos estáticosDecorador de métodos de clase5Polimorfismo
Sobreescritura de métodos revisitadaDuck TypingClases y métodos abstractosDiseño de interfacesResumen - Calculadora de figuras8Conceptos avanzados de POO
Composición vs. 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 de claseDecoradores de propiedadesAtributos privadosResumen - Gestor de cuentas bancarias