logo

Herencia de Python

La herencia es un aspecto importante del paradigma orientado a objetos. La herencia proporciona reutilización del código al programa porque podemos usar una clase existente para crear una nueva clase en lugar de crearla desde cero.

En herencia, la clase secundaria adquiere las propiedades y puede acceder a todos los miembros de datos y funciones definidos en la clase principal. Una clase secundaria también puede proporcionar su implementación específica a las funciones de la clase principal. En esta sección del tutorial, discutiremos la herencia en detalle.

cómo convertir una cadena a un carácter

En Python, una clase derivada puede heredar la clase base simplemente mencionando la base entre corchetes después del nombre de la clase derivada. Considere la siguiente sintaxis para heredar una clase base en la clase derivada.

Herencia de Python

Sintaxis

 class derived-class(base class): 

Una clase puede heredar varias clases mencionándolas todas dentro del paréntesis. Considere la siguiente sintaxis.

Sintaxis

 class derive-class(, , ..... ): 

Ejemplo 1

 class Animal: def speak(self): print('Animal Speaking') #child class Dog inherits the base class Animal class Dog(Animal): def bark(self): print('dog barking') d = Dog() d.bark() d.speak() 

Producción:

 dog barking Animal Speaking 

Herencia multinivel de Python

La herencia multinivel es posible en Python como otros lenguajes orientados a objetos. La herencia multinivel se archiva cuando una clase derivada hereda otra clase derivada. No hay límite en la cantidad de niveles hasta los cuales la herencia multinivel se archiva en Python.

Herencia de Python

La sintaxis de la herencia multinivel se proporciona a continuación.

Sintaxis

 class class1: class class2(class1): class class3(class2): . . 

Ejemplo

 class Animal: def speak(self): print('Animal Speaking') #The child class Dog inherits the base class Animal class Dog(Animal): def bark(self): print('dog barking') #The child class Dogchild inherits another child class Dog class DogChild(Dog): def eat(self): print('Eating bread...') d = DogChild() d.bark() d.speak() d.eat() 

Producción:

 dog barking Animal Speaking Eating bread... 

Herencia múltiple de Python

Python nos brinda la flexibilidad de heredar múltiples clases base en la clase secundaria.

Herencia de Python

La sintaxis para realizar herencia múltiple se proporciona a continuación.

Sintaxis

 class Base1: class Base2: . . . class BaseN: class Derived(Base1, Base2, ...... BaseN): 

Ejemplo

 class Calculation1: def Summation(self,a,b): return a+b; class Calculation2: def Multiplication(self,a,b): return a*b; class Derived(Calculation1,Calculation2): def Divide(self,a,b): return a/b; d = Derived() print(d.Summation(10,20)) print(d.Multiplication(10,20)) print(d.Divide(10,20)) 

Producción:

 30 200 0.5 

El método issubclass(sub,sup)

El método issubclass(sub, sup) se utiliza para verificar las relaciones entre las clases especificadas. Devuelve verdadero si la primera clase es la subclase de la segunda clase y falso en caso contrario.

Considere el siguiente ejemplo.

Ejemplo

 class Calculation1: def Summation(self,a,b): return a+b; class Calculation2: def Multiplication(self,a,b): return a*b; class Derived(Calculation1,Calculation2): def Divide(self,a,b): return a/b; d = Derived() print(issubclass(Derived,Calculation2)) print(issubclass(Calculation1,Calculation2)) 

Producción:

 True False 

El método isinstance (obj, clase)

El método isinstance() se utiliza para comprobar la relación entre los objetos y las clases. Devuelve verdadero si el primer parámetro, es decir, obj es la instancia del segundo parámetro, es decir, clase.

Considere el siguiente ejemplo.

Ejemplo

 class Calculation1: def Summation(self,a,b): return a+b; class Calculation2: def Multiplication(self,a,b): return a*b; class Derived(Calculation1,Calculation2): def Divide(self,a,b): return a/b; d = Derived() print(isinstance(d,Derived)) 

Producción:

 True 

Anulación de métodos

Podemos proporcionar alguna implementación específica del método de la clase principal en nuestra clase secundaria. Cuando el método de la clase principal se define en la clase secundaria con alguna implementación específica, entonces el concepto se denomina anulación de método. Es posible que necesitemos realizar una anulación de métodos en el escenario donde se necesita una definición diferente de un método de clase principal en la clase secundaria.

Considere el siguiente ejemplo para realizar la anulación de métodos en Python.

Ejemplo

 class Animal: def speak(self): print('speaking') class Dog(Animal): def speak(self): print('Barking') d = Dog() d.speak() 

Producción:

 Barking 

Ejemplo de la vida real de anulación de método

 class Bank: def getroi(self): return 10; class SBI(Bank): def getroi(self): return 7; class ICICI(Bank): def getroi(self): return 8; b1 = Bank() b2 = SBI() b3 = ICICI() print('Bank Rate of interest:',b1.getroi()); print('SBI Rate of interest:',b2.getroi()); print('ICICI Rate of interest:',b3.getroi()); 

Producción:

multiplexor
 Bank Rate of interest: 10 SBI Rate of interest: 7 ICICI Rate of interest: 8 

Abstracción de datos en Python

La abstracción es un aspecto importante de la programación orientada a objetos. En Python, también podemos ocultar datos agregando el doble guión bajo (___) como prefijo del atributo que se va a ocultar. Después de esto, el atributo no será visible fuera de la clase a través del objeto.

Considere el siguiente ejemplo.

Ejemplo

 class Employee: __count = 0; def __init__(self): Employee.__count = Employee.__count+1 def display(self): print('The number of employees',Employee.__count) emp = Employee() emp2 = Employee() try: print(emp.__count) finally: emp.display() 

Producción:

 The number of employees 2 AttributeError: 'Employee' object has no attribute '__count'