Tutorial de Python - Herencia de clase

  1. Anulación del método de herencia de la clase Python
  2. Herencia múltiple de la clase Python
  3. Herencia multinivel de la clase Python

En esta sección, aprenderás la herencia de la programación orientada a objetos en Python.

En Herencia, se crea una clase hija a partir de una clase padre. La clase hija hereda todo (miembros de datos y funciones de miembros) de la clase padre.

La siguiente es la sintaxis de la herencia en Python:

class ParentClass:
    #members
class ChildClass(ParentClass):
    #members

En la clase hija, se tienen todas las características de la clase padre y también se pueden añadir nuevas funcionalidades.

Como en el ejemplo siguiente, tiene una clase padre llamada Auto y una clase hija car que se hereda de ella.

>>> class Auto:
	def __init__(self, e, n):
		self.engine = e
		self.name = n
	def display(self):
		print("Name of Auto: ", self.name)
		print("Engine of auto: ", self.engine)

		
>>> class Car(Auto):
	def __init__(self):
		self.x= input("Enter name of car: ")
		self.y= input("Enter engine of car: ")
		Auto.__init__(self,self.y,self.x)

		
>>> c = Car()
Enter name of car: Prius
Enter engine of car: 1.5l
>>> c.display()
Name of Auto:  Prius
Engine of auto:  1.5l

Puedes ver aquí que los métodos de la clase Auto pueden ser usados en la clase Car. Esto se debe a que Car se hereda de Auto.

Dentro del constructor de Car se llama al constructor de Auto. El objeto Car puede utilizarse para llamar a todos los métodos de Auto.

Anulación del método de herencia de la clase Python

La anulación de métodos se produce cuando se tienen los mismos métodos para las clases de los padres y de los hijos. La anulación de métodos es básicamente un concepto en el que una clase hija cambia la implementación de los métodos de su clase padre.

Considere el ejemplo en el que la clase hija Car tiene el mismo método display que en la clase Auto pero la implementación cambia:

>>> class Auto:
	def __init__(self, e, n):
		self.engine = e
		self.name = n
	def display(self):
		print("Name of Auto: ", self.name)
		print("Engine of auto: ", self.engine)

		
>>> class Car(Auto):
	def __init__(self):
		self.x= input("Enter name of car: ")
		self.y= input("Enter engine of car: ")
		Auto.__init__(self,self.y,self.x)
    def display(self):
		print("You are in child class")

		
>>> c = Car()
Enter name of car: Prius
Enter engine of car: 1.5l
>>> c.display()
You are in child class

Así que ahora cuando se llama al método display en el objeto c, se invoca al método de la clase hija.

Herencia múltiple de la clase Python

La herencia múltiple ocurre cuando una clase de niños tiene más de una clase de padres. Las funcionalidades de cada clase padre son heredadas por la clase hijo.

A continuación se muestra la sintaxis de la herencia múltiple:

class A:
    #members
class B:
    #members
class child(A, B):
    #members

Ejemplo:

>>> class A:
	def dispA(self):
		print('You are in class A')

		
>>> class B:
	def dispB(self):
		print('You are in class B')

		
>>> class C(A, B):
	def dispC(self):
		print('You are in class C')

>>> Cobj = C()
>>> Cobj.dispA()
You are in class A

>>> Cobj.dispB()
You are in class B

>>> Cobj.dispC()
You are in class C

Hay que tener en cuenta que el objeto C (clase hija) puede llamar a los métodos de sus clases padre A y B. Por lo tanto, se puede decir que C hereda todo de A y B.

Herencia multinivel de la clase Python

La herencia de multinivel es cuando se hereda una clase de hijo de otra clase de hijo.

La sintaxis de la herencia multinivel es la siguiente:

class A:
    #members
class B(A):
    #members
class C(B):
    #members

Ejemplo:

>>> class A:
	def dispA(self):
		print('You are in class A')

		
>>> class B(A):
	def dispB(self):
		print('You are in class B')

		
>>> class C(B):
	def dispC(self):
		print('You are in class C')
        
>>> Cobj = C()

>>> Cobj.dispA()
You are in class A

>>> Cobj.dispB()
You are in class B

>>> Cobj.dispC()
You are in class C

Se puede ver aquí que la clase C puede invocar los métodos de sus clases padre y abuelo.