Introducción a la herencia en Python

Python, que cuenta con capacidades de paradigma múltiple, obviamente se adapta al estilo de programación orientado a objetos. Y cualquier lenguaje no puede ser lo suficientemente ridículo como para reclamar una metodología orientada a objetos sin proporcionar soporte para la herencia, incluido python. Python proporciona un sabor de herencia claramente único, lo que permite operaciones extremadamente potentes nunca antes vistas. Aunque viene con algunas limitaciones, por ejemplo, actualmente, la seguridad a través del alcance para los miembros de la clase solo se logra por convención, y no es inherentemente parte del lenguaje. Por lo tanto, los miembros declarados como privados son realmente accesibles públicamente con algunas modificaciones.

Sintaxis de clase

La sintaxis para definir una clase derivada cuando se heredan una o más clases base es la siguiente:

class derivedClassName(baseClassName(, …)):


Como se muestra, la clase derivada especifica una lista separada por comas de clases base para heredar en el encabezado de definición de clase.

Cocina de clase

Comencemos definiendo una clase base utilizada para todos nuestros ejemplos:

class cuisine():
def __init__(self, type):
self.type = type
returncooked_cuisine = new cuisine('cooked')

La base que se muestra define una plantilla de objeto utilizada para definir cocinas y capturar si se trata de una cocina cocinada o no. También tiene un constructor utilizado para aceptar el tipo de cocina. Posteriormente se crea un objeto del tipo 'cocinado'.

Tipos de herencia en Python

Hay principalmente dos tipos de herencia, una combinación de los cuales produce cualquier otro tipo.

1. Herencia única: una clase base, heredada por una clase derivada. Este es el tipo más simple de herencia. También el mínimo posible. La clase derivada invoca automáticamente el constructor de la clase base.

2. Herencia múltiple: múltiples clases base heredadas por una clase derivada. Los constructores de la clase base se invocan en el orden en que se derivaron las clases.

Tipos derivados de herencia

La combinación de las dos formas de herencia anteriores puede conducir a los siguientes tipos de herencia:

1. Herencia jerárquica: una clase base heredada por múltiples clases derivadas. Cada clase derivada funcionará de forma independiente, pero los objetos comparten las variables de clase en diferentes clases.

2. Herencia multinivel: una clase derivada que sirve como clase base para otra clase derivada. Los constructores de clase base se invocan de forma recursiva en este caso.

3. Herencia híbrida: una combinación de múltiples instancias de los tipos de herencia mencionados anteriormente. Esto podría conducir a cualquier combinación imaginable de clases.

Ejemplos de herencia en Python

Debajo hay ejemplos de herencia en Python:

1. Herencia individual

Creemos una clase llamada Indian Cuisine que herede la cocina de clase.

class indian_cuisine(cuisine):
def __init__(self, type, place):
super().__init__(type)
self.place = place
returnindian_cuisine = new cuisine('cooked', 'India')

Como se muestra en una nueva clase, se creó indian_cusine que acepta parámetros de tipo e invoca un constructor de clase base, pasando el parámetro. Además, crea un nuevo lugar variable de objeto . Esto se usa solo en la clase derivada y no es visible para los objetos de la clase base.

2. Herencia jerárquica

Creemos una clase llamada ItalianCuisine que hereda la cocina de clase:

class italian_cuisine(cuisine):
def __init__(self, type, place):
super().__init__(type)
self.place = place
returnitalian_cuisine = new cuisine('cooked', 'Italy')

Como se muestra en una nueva clase, se creó italian_cusine que acepta parámetros de tipo e invoca un constructor de clase base, pasando el parámetro. Además, crea un nuevo lugar variable de objeto . Esto se usa solo en la clase derivada y no es visible para los objetos de la clase base. Ahora, dado que dos clases, indian_cusines y italian_cuisine heredan la clase de cocina, hay una herencia jerárquica implementada.

3. Herencia múltiple

Creemos una clase llamada FineDineCuisine que hereda de múltiples clases.

class fine_dine_cuisine(indian_cuisine, italian_cuisine):
def __init__(self, type, place, portion_size):
super().__init__(type, place)
self.portion_size = portion_size
returnfine_dine_cuisine = new cuisine('cooked', 'India', 4)

La nueva clase fine_dine_cuisine, hereda de indian_cuisine e italian_cuisine, heredando sus parámetros. Acepta los parámetros tipo, lugar y tamaño_porción. tipo y lugar se pasan como argumentos para constructores de clase base. porción_tamaño es un nuevo parámetro de objeto que no se comparte con las clases base.

Nota sobre la herencia de diamantes:

Ahora, dado que tanto indian_cuisine como italian_cuisine heredan de la clase de cocina, forma un caso clásico de herencia de diamantes, donde múltiples instancias de una clase base están presentes directa / indirectamente para una clase derivada. En la mayoría de los lenguajes, como c ++, esto causa un problema, o se usan clases abstractas. Python, por otro lado, especifica su propia solución innovadora. Hereda los métodos y atributos comunes solo una vez, dando preferencia a las clases en el orden de herencia. Por lo tanto, aquí, dado que la cocina se hereda dos veces, se da preferencia a la versión indian_cuisine de la cocina, ya que se hereda primero.

Nota sobre los miembros de la clase:

Cualquier atributo definido dentro de la definición de clase, pero no dentro de una función, se convierte en un atributo de clase y se comparte en todas las instancias de la clase. Por lo tanto, si un objeto cambia cualquiera de estos atributos de clase, los cambios son visibles para todas las demás instancias (ya sea para el mismo objeto de clase u objeto de clase derivado). Por lo tanto, tenga cuidado al usar atributos de clase no presentes en ninguna definición de método.

Conclusión - Herencia en Python

Python ha definido una vez más una forma muy flexible, acomodaticia y poderosa de usar cuando el paradigma orientado a objetos es la ruta preferida. Definitivamente es un concepto que todos pueden usar y deben tener bajo su cinturón. Estos conceptos se utilizan para formar los componentes básicos de cualquier software escalable y mantenible.
Con esta introducción básica a la herencia en Python, puede seguir adelante y enfocarse en las declaraciones de problemas del mundo real y ver qué tan bien puede pensar en un diseño.

Artículos recomendados

Esta es una guía de herencia en Python. Aquí discutimos la Introducción, la Sintaxis y los tipos de Herencia en Python junto con diferentes ejemplos y su implementación de código. También puede consultar nuestros otros artículos sugeridos:

    1. Herencia en Java
    2. ¿Qué es la herencia en la programación?
    3. Herencia en C #
    4. Anulación en Java
    5. Herencia en PHP
    6. Declaración de clase abstracta en C # con ejemplo