Herència simple i múltiple – Python – OOP

Seguint amb programació orientada a objectes en Python (OOP) veurem Herència simple i múltiple. Herència múltiple en Python

Quan parlem de classes hi ha un avantatge molt destacable que és la possibilitat que un objecte pertanyent a una classe sigui capaç d’heretar els atributs i mètodes de una altra.

Herència simple vs Herència Múltiple

Índex de l’contingut

Herència simple

L’herència simple té lloc quan una classe filla hereta els atributs i mètodes d’una única classe pare. Anem a procedir a crear dues classes, una principal i una secundària, en aquesta última anem a afegir la funció de presentar-accedint als atributs de la classe pare.

#!/usr/bin/env python# -*- coding: utf-8 -*-#class Estudiante(object): #Creamos la clase padre def __init__(self, edad, nombre): # Definimos los parámetros edad y nombre self.edad = edad #Declaramos que el atributo edad es igual al argumento edad self.nombre = nombre #Declaramos que el atributo nombre es igual al argumento nombreclass Derecho (Estudiante): #Entre paréntesis indicamos la clase padre o principal ESTUDIANTE #Lo que la convierte a DERECHO en una clase hija o secundaria def presentarse(self): #Creamos el método presentarse print (f"Soy {self.nombre} tengo {self.edad} años y estudio Derecho") #Se presenta llamando los atributosManuel = Derecho(26, 'Manuel Contreras') #Indicamos argumentos edad y nombreManuel.presentarse() # Llamamos al método y Manuel se presenta

Resultat:

Sóc Manuel Contreras tinc 26 anys i estudi Dret

Com veus assignem a l’objecte “Manuel” la classe “Dret” que hereta els atributs de “Estudiant”. de el contrari obtindrem un error perquè els atributs nom i edat pertanyen a Estudiant.

Recorda que per declarar una classe ho fem utilitzant el constructor __init__ i entre parèntesis els paràmetres als quals els donarem arguments a l’hora d’assignar- la classe a algun objecte.

Class Nombredelaclase (object):

def constructor_init (self, paràmetres):

Declaració

I si volem que la nostra classe hereti els atributs o mètodes d’una altra classe principal (conté el constructor __init __)

Class Nombredelaclase (clasepadre):

Declaracions

Quan vam crear una classe filla no cal tornar a incloure el constructor __init__ si la classe pare o principal ja el conté.

classe base o pare

Perquè sigui possible l’herència d’atributs i mètodes d’una classe, ha d’existir la superclasse o classe principal de la qual la classe filla o secundària va a heretar. És a dir, perquè hi hagi un fill deu existir un pare.

Suposem que nosaltres hem heretat algunes virtuts i defectes dels nostres pares. Ells serien les nostres classes primàries, o base. I nosaltres seríem la secundària o filla.

Herència Múltiple

Els casos d’herència múltiple en Python es donen quan una classe secundària o filla hereta atributs i mètodes de mes d’una classe principal o pare. Només cal separar amb una coma les dues principals a l’hora de crear la classe secundària:

Class Nombredelaclase (clasepadre1, clasepadre2):

Declaracions

Aquesta classe filla haurà d’heretar atributs i mètodes d’ambdues classes (clasepadre1 i clasepadre2).

Vegem un exemple de herència múltiple amb el mateix codi anterior però creant ara una classe corresponent a l’institut.

#!/usr/bin/env python# -*- coding: utf-8 -*-#class Estudiante(object): #Creamos la clase padre def __init__(self, edad, nombre): # Definimos los parámetros edad y nombre self.edad = edad #Declaramos que el atributo edad es igual al argumento edad self.nombre = nombre #Declaramos que el atributo nombre es igual al argumento nombreclass Instituto(object): def presentarinstituto (self): print("""Estudio en el Instituto de Leyes 112""")class Derecho (Estudiante, Instituto): #Entre paréntesis indicamos la clase padre o principal ESTUDIANTE #Lo que la convierte a DERECHO en una clase hija o secundaria def presentarse(self): #Creamos el método presentarse print (f"Soy {self.nombre} tengo {self.edad} años y estudio Derecho") #Se presenta llamando los atributos Manuel = Derecho(26, 'Manuel Contreras') #Indicamos argumentos edad y nombreManuel.presentarse() # Llamamos al método y Manuel se presentaManuel.presentarinstituto()

Resultat:

Sóc Manuel Contreras tinc 26 anys i estudi Dret estudi a l’Institut de Lleis 112

Com podem veure la classe Dret ara hereta de la classe principal Estudiant i Institut. Per això encara que l’objecte “Manuel” pertanyi a la classe Dret, se’ns permet utilitzar el mètode “Manuel.presentarinstituto ()” que correspon a la classe Institut.

Avantatges

Una de les principals avantatges és la reutilització de codi permetent establir una relació entre classes evitant que sigui necessari tornar a declarar certs mètodes o atributs.

les classes ens permeten construir objectes sobre una col·lecció d’atributs i mètodes definits de forma abstracta. I la capacitat d’herència ens permetrà crear classes secundàries més grans i capaços heretant múltiples atributs i mètodes d’altres així com també més específiques controlant els mateixos per a una única classe particular.

descansant en el núvol: login off

descansant en el núvol: login off

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *