jueves, 11 de julio de 2013

Clases y objetos python 3 parte (2/4)

Tutorial clases python 3


Ya hablamos de las clases y como se definen y funcionan con sus metodos y variables de clase,ahora toca hablar de la herencia,la cual es cuando tomamos atributos de una clase madre llamada clase super(superclass),la cual le pasa atributos y metodos a nuestra clase hija de la cual deriva de la superclass.


La clase super es la clase a la cual no le pasamos argumentos o solo le pasamos el argumento object:

class Ejemplo(object):

Cuando una clase es creada a base de otra se usa el nombre de la superclase como parametro:

class Ejemplo2(Ejemplo):

Cuando creamos una clase nueva a base de otra clase,la clase hija tiene los atributos y metodos de la clase madre:

 #!/usr/bin/env python3  
 class Madre(object):  
   def __init__(self):  
     self.hola = “Hola mundo”  
 class Hija(Madre):  
   pass  
 ejemplo = Hija()  
 print (ejemplo.hola)  


Como vemos no se ha definido una nueva,cuando esto ocurre se le conoce como sobrecarga(override):

 #!/usr/bin/env python3  
 class Madre(object):  
   def __init__(self):  
     self.hola = “Hola mundo”  
 class Hija(Madre):  
   def __init__(self):  
     self.hola = “Hola otra vez”  
 ejemplo = Hija()  
 print (ejemplo.hola)  

Como podemos ver parece que sobrecargamos la variable,pero en realidad sobrecargamos el constructor,(el metodo constructor),por ejemplo:

Si lo ejecutamos dará un error porque no hemos definido la variable hola en el constructor de la clase hija.

Aun asi podemos sobrecargar el constructor,pero no así los demás métodos:

 #!/usr/bin/env python3  
 class Madre(object):  
   def __init__(self):  
     self.hola = "Hola mundo"  
   def hola(self): # Metodo de clase madre  
     self.hola = "Hola mundo"  
     return self.hola  
 class Hija(Madre):  
   def __init__(self): # Sobrecargacamos el constructor  
     self.otra_var = "Hola otra vez"  
 ejemplo = Hija()  
 print (ejemplo.hola()) # Ahora imprimimos el método  


Veamos un ejemplo,las Pc continen un forma especial,pero existen Laptos,Netbooks y cada una tiene su hardware y software,podriamos definir una Pc de esta manera:

class Pc(object):
   def __init__(self):
       self.partes = ['hardaware','software']
       self.stdout = 'pantalla'
       self.stdin = 'teclado'
       self.nombre = 'Pc'

Ahora definimos una netbook derivada de la clase Pc:

 class Netbook(Pc):  
   def __init__(self,arch,sistema,procesador):  
   Pc.__init__(self)  
 """^Para llamar el los atributos del constructor de la clase madre lo hacemos de esta manera"""  
   self.arch = arch  
   self.portable = 'muy portatil'  
   self.sistema = sistema  
   self.procesador = procesador  
   def ver(self):  
     print ('Una netbook %s arquitectura %s' %(self.procesador,self.arch))  
     print ('Contiene un sistema %s y es %s' %(self.sistema,self.portable))  
     print ('Es de la familia %s' %(self.nombre))  
     for i in self.partes:  
       print ('Partes : %s' %(i))  
 hp_mini = Netbook("x86","GNU/Linux","intel")  
 hp_mini.ver()  



Eso es todo,de momento aun faltan dos partes de clases y objectos,espero que haya quedada clara la idea de como se heredan atributos,en las proxias partes hablaremos de lo que falta,este codigo es el final:


Enlace

No hay comentarios.:

Publicar un comentario

Los comentarios serán revisados antes de ser publicados.