Tutorial de Python - Herencia de clase
- Anulación del método de herencia de la clase Python
- Herencia múltiple de la clase Python
- 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.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook