Blog
La herencia de clases es una técnica de la programación orientada a objetos (POO) muy útil que permite crear una clase general (Clase base) primero y luego crear “subclases” (Clases derivadas) mas especificas que re-utilicen el código de la clase general.
La sintaxis para la definición de una clase derivada es la siguiente:
class ClaseDerivada(ClaseBase): ''' Contenido de la clase ClaseDerivada '''
ClaseBase debe ser accesible desde el lugar donde se está definiendo ClaseDerivada. En caso de estar en un módulo distinto, se indica cual es la clase base de la forma modulo.ClaseBase.
Tipos de Herencia de clases
Herencia Simple
La herencia simple ocurre cuando una clase derivada hereda atributos y métodos de una única clase base. Ejemplo:
class Empleado(object): # Constructor de la clase def __init__(self,nombre,iden): self.nombre = nombre self.iden = iden class RecHumanos(Empleado): def saludo(self): print("Hola, mi nombre es " + self.nombre + " y mi ID es " + self.iden + ".") print("Trabajo en Recursos Humanos.")
Supongamos que tenemos una empresa y queremos organizar los trabajadores según el departamento donde trabaja. Todos los empleados de la empresa pertenecerán a la clase empleado y, según su departamento, pertenecerán a la clase indicada. En este caso definimos solo una clase para el dpto. de Recursos Humanos. El ingreso de un empleado en el sistema sería de la siguiente forma:
>>> Karla = RecHumanos("Karla","182052") >>> Karla.saludo() Hola, mi nombre es Karla y mi ID es 182052. Trabajo en Recursos Humanos.
Creamos un objeto llamado “Karla”, el cual representa un empleado del departamento de recursos humanos y hereda los atributos de la clase Empleado. Si la clase RecHumanos no fuera derivada de la clase Empleado, al llamar la funcion saludo(), se generaría un error, ya que Karla no tendría nombre ni identificación.
Herencia Múltiple
La herencia múltiple ocurre cuando una clase es derivada de dos clases base o mas. Las clases base se indican de la misma forma, separando cada una con una coma.
class ClaseDerivada(ClaseBase1,ClaseBase2): ''' Contenido de la clase '''
Las clases derivadas heredan todos los atributos y métodos de las clases que tomen como base. Continuando con el ejemplo de los empleados, creemos una clase mas que será incluida en el esquema.
class Empleado(object): # Constructor de la clase def __init__(self,nombre,iden): self.nombre = nombre self.iden = iden class Valencia(object): domicilio = "Valencia" class RecHumanos(Empleado,Valencia): def saludo(self): print("Hola, mi nombre es " + self.nombre + " y mi ID es " + self.iden + ".") print("Trabajo en Recursos Humanos.") print("Vivo en " + self.domicilio + ".")
La clase consiste en el lugar de residencia del empleado. En este caso, la clase es para los empleados cuya residencia sea Valencia. Al crear el objeto de nuevo y utilizar la función de saludo se obtendrá lo siguiente:
>>> Karla = RecHumanos("Karla","182052") >>> Karla.saludo() Hola, mi nombre es Karla y mi ID es 182052. Trabajo en Recursos Humanos. Vivo en Valencia.
La práctica de la herencia de clases es utilizada principalmente para poder reutilizar código estableciendo una relación entre clases, lo que evita la necesidad de declarar mas de una vez algún método o atributo de alguna clase.
El uso de clases nos permite crear objetos con determinados atributos y métodos definidos con cierta abstracción. La herencia de clases nos permitirá crear clases secundarias, mas específicas, que obtengan atributos y métodos de otras.
➡ Te invitamos a realizar el Curso de Python para Principiantes: