Asest

Asociación Española de Storytelling
  • Eventos
  • Áreas de especialización
    • Emprendimiento
    • Salud
    • Deporte
    • Nuevas tecnologías
    • Turismo
    • Diseño y moda
  • Comunicación
    • Artículos
    • Prensa
    • Testimonios
  • Story
  • Galería
  • Contacto
  • Acerca de
Inicio
|
Comunicación

Herencia en Python y su Aplicación en Odoo ERP

by Admin on 20/05/2026

La herencia es un concepto fundamental en la programación orientada a objetos (POO) que permite crear nuevas clases, basadas en otras clases existentes. La nueva clase hereda los atributos y métodos de la clase base y puede agregar sus propios atributos y métodos. De esta forma, la subclase puede “extender” o modificar el comportamiento de la superclase.

En Python, para hacer que una clase herede de otra, se añade el nombre de la superclase entre paréntesis justo después de la definición de la clase.

Conceptos Clave de la Herencia

Superclase y Subclase

  • Superclase (Clase Padre): Es la clase de la cual se heredan los métodos y atributos. Encapsula atributos y métodos compartidos.
  • Subclase (Clase Hija): Es la clase que hereda métodos y atributos de la superclase. Esto le permite utilizar la funcionalidad definida en la clase padre y añadir sus propias funcionalidades.

La herencia en Python permite a las clases heredar atributos y comportamientos de otras clases, lo que favorece la reutilización del código y un diseño limpio.

Tipos de Herencia

Herencia Simple

La herencia simple tiene lugar cuando una clase hija hereda los atributos y métodos de una única clase padre. Esto es útil cuando un tipo de objeto comparte propiedades comunes con una categoría más amplia, pero también requiere atributos o comportamientos adicionales.

Por ejemplo, en un sistema de gestión escolar, todos los individuos (alumnos, profesores y personal) comparten algunos detalles comunes como nombre e ID. Sin embargo, los alumnos también tienen expedientes académicos, como notas y cursos matriculados. La clase `Student` hereda el método `get_details()` de `Person` pero lo amplía para incluir `grade` y `courses`.

Herencia Múltiple

La herencia múltiple permite que una clase hija herede de más de una clase padre, combinando atributos y comportamientos de cada una. Python soporta la herencia múltiple, es decir, heredar métodos y atributos de más de un padre.

Por ejemplo, una clase `Student` puede heredar atributos y métodos tanto de `Person` como de `Athlete`. Así, la clase `Student` tiene acceso al método `get_details()` de la clase padre `Person` y al método `get_skill()` de la clase padre `Athlete`.

Sin embargo, heredar de varias clases puede provocar conflictos si ambas clases padre definen un método o atributo con el mismo nombre. El orden de resolución de métodos (MRO) determina el orden de búsqueda de métodos y atributos en las clases.

Herencia Multinivel

La herencia multinivel se produce cuando una clase hija hereda de otra clase hija, y esa clase hija hereda de una clase padre.

En este tipo de herencia, cada clase en la cadena añade algo nuevo: `Person` gestiona nombres e identificaciones, `Student` incluye calificaciones y `GraduateStudent` introduce una tesis. Gracias a `super().__init__()`, se reutiliza la lógica de inicialización sin duplicar código.

Herencia Jerárquica

En la herencia jerárquica, una clase padre sirve de base para múltiples clases hijas.

Aquí, la clase `Person` sirve de base, ofreciendo atributos y métodos comunes (`name`, `id`, y `get_details`).

Herencia Híbrida

La herencia híbrida combina dos o más tipos de herencia.

En este ejemplo, la clase `Student` demuestra la herencia híbrida heredando atributos y métodos tanto de `Employee` (que a su vez hereda de `Person`) como de `Athlete`.

Sobrescritura de Métodos y `super()`

Sobrescritura de Métodos

La sobrescritura de métodos permite a una clase hija proporcionar una implementación específica para un método ya definido en su clase padre.

Por ejemplo, la clase `Estudiante` sobreescribe el método `mostrar_informacion` de `Persona` para incluir información adicional sobre la matrícula. Esto se logra definiendo un nuevo método `mostrar_informacion` en la clase `Estudiante`.

PYTHON PRO: DUNDER METHODS en Python - Conceptos Avanzados #python #pythonadvanced

Uso de `super()`

La función `super()` se utiliza para llamar a métodos de la clase padre desde la clase hija. Es habitual usarla con el método constructor `__init__` para inicializar los atributos de la clase base y para evitar nombrar explícitamente la clase padre.

Así, la clase `Student` utiliza `super().__init__(name, id)` para llamar al método `__init__` de la clase padre `Person`, por lo que no necesita repetir código para inicializar los atributos `name` y `id`.

Ventajas y Desventajas de la Herencia

Ventajas

  • Reutilización de Código: Permite escribir código una vez en la clase padre y reutilizarlo en las clases hijas.
  • Simplicidad: Modela las relaciones con claridad, haciendo el código más organizado y fácil de entender.
  • Escalabilidad: Facilita añadir nuevas funciones o clases hijas sin afectar el código existente.

Desventajas

  • Complejidad: Demasiados niveles de herencia pueden hacer que el código sea difícil de seguir y mantener.
  • Dependencia: Los cambios en una clase padre pueden afectar involuntariamente a todas las subclases.
  • Uso Indebido: Utilizar la herencia cuando no es lo más adecuado puede complicar los diseños.

Herencia en Odoo ERP

En el contexto de Odoo ERP, la herencia es una herramienta poderosa para extender y personalizar la funcionalidad de los módulos existentes. Permite crear una nueva clase Python que hereda y amplía la funcionalidad de una clase existente.

Extensión de Modelos en Odoo

Para extender un modelo en Odoo, se utiliza la clave `_inherit` para indicar a qué modelo se quieren añadir nuevos campos y métodos.

  • En el fichero Python, se define una nueva clase de modelo. En lugar de usar `_name = ‘nombre.nuevo’`, se utiliza el nombre del modelo que se quiere extender y se define `_inherit = ‘res.partner’` (por ejemplo, para extender el modelo de socios).
  • Dentro de esta nueva clase heredada, se pueden añadir todos los campos que se necesiten. Por ejemplo, si se necesita un campo `referencia_interna_cliente` para el modelo `res.partner`, simplemente se define allí.

La siguiente tabla muestra un ejemplo de cómo la herencia puede extender un modelo base en Odoo:

Clase Base (Odoo) Propiedad Descripción Clase Heredada (Personalizada) Propiedad Extendida Descripción
`res.partner` `name` Nombre del socio `res.partner` (heredado) `referencia_interna_cliente` Referencia interna del cliente
`res.partner` `email` Correo electrónico del socio `res.partner` (heredado) `tipo_cliente` Tipo de cliente (Ej: "Mayorista", "Minorista")

La herencia de modelos es fundamental para personalizar y adaptar Odoo a las necesidades específicas de cada negocio sin modificar el código fuente original, lo que facilita las actualizaciones y el mantenimiento.

tags: #python #herencia #en #erp

Publicaciones populares:

  • Budapest y el conflicto ruso-ucraniano
  • Estrategias de marketing que funcionan
  • Impulsando el emprendimiento en la universidad
  • Branding exitoso en decoración
  • Marketing en Facebook: La guía completa
Asest © 2025. Privacy Policy