Foros del Web » Programando para Internet » Python »

Ejemplo de herencia en clases

Estas en el tema de Ejemplo de herencia en clases en el foro de Python en Foros del Web. Extraccion de [URL="http://mundogeek.net/archivos/2008/03/05/python-orientacion-a-objetos/"]Manuel de Python[/URL] Como Bateria y Guitarra heredan de Instrumento, ambos tienen un método tocar y un método romper, y se inicializan pasando ...
  #1 (permalink)  
Antiguo 18/10/2011, 17:13
 
Fecha de Ingreso: septiembre-2011
Mensajes: 42
Antigüedad: 12 años, 7 meses
Puntos: 3
Ejemplo de herencia en clases

Extraccion de [URL="http://mundogeek.net/archivos/2008/03/05/python-orientacion-a-objetos/"]Manuel de Python[/URL]
Como Bateria y Guitarra heredan de Instrumento, ambos tienen un método tocar y un método romper, y se inicializan pasando un parámetro precio. Pero, ¿qué ocurriría si quisiéramos especificar un nuevo parámetro tipo_cuerda a la hora de crear un objeto Guitarra? Bastaría con escribir un nuevo método __init__ para la clase Guitarra que se ejecutaría en lugar del __init__ de Instrumento.

Ahora bien, puede ocurrir en algunos casos que necesitemos sobreescribir un método de la clase padre, pero que en ese método queramos ejecutar el método de la clase padre porque nuestro nuevo método no necesite más que ejecutar un par de nuevas instrucciones extra. En ese caso usaríamos la sintaxis SuperClase.metodo(self, args); por ejemplo, para llamar al método __init__ de Instrumento desde Guitarra usaríamos Instrumento.__init__(self, precio)

Observad que en este caso si es necesario especificar el parámetro self.
Código Python:
Ver original
  1. class Instrumento:
  2.     def __init__(self, precio):
  3.         self.precio = precio
  4.  
  5.     def tocar(self):
  6.         print "Estamos tocando musica"
  7.  
  8.     def romper(self):
  9.         print "Eso lo pagas tu"
  10.         print "Son", self.precio, "$$$"
  11.  
  12. class Bateria(Instrumento):
  13.     pass
  14.  
  15. class Guitarra(Instrumento):
  16.     pass

Alguien podria traducirme el ejemplo de arriba al codigo que propone la pagina inicialmente?
No me queda claro donde queda el Super.Clase.metodo(self, args)


Gracias de antemano.
Exitos!
__________________
"Porque nada se...
quiero saberlo todo"
  #2 (permalink)  
Antiguo 18/10/2011, 19:20
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Ejemplo de herencia en clases

Este es el código de ejemplo de mundogeek.net
Código Python:
Ver original
  1. class Instrumento:
  2.     def __init__(self, precio):
  3.         self.precio = precio
  4.  
  5.     def tocar(self):
  6.         print "Estamos tocando musica"
  7.  
  8.     def romper(self):
  9.         print "Eso lo pagas tu"
  10.         print "Son", self.precio, "$$$"
  11.  
  12. class Bateria(Instrumento):
  13.     pass
  14.  
  15. class Guitarra(Instrumento):
  16.     pass

Ahora supón, que a la clase guitarra le añades el numero de cuerdas (si, no soy precisamente el tipo que sabe de guitarras). Basado en esto entonces tendríamos que modificar el constructor de Guitarra para que acepte este nueva característica.

Código Python:
Ver original
  1. class Instrumento:
  2.     def __init__(self, precio):
  3.         self.precio = precio
  4.  
  5.     def tocar(self):
  6.         print "Estamos tocando musica"
  7.  
  8.     def romper(self):
  9.         print "Eso lo pagas tu"
  10.         print "Son", self.precio, "$$$"
  11.  
  12. class Bateria(Instrumento):
  13.     pass
  14.  
  15. class Guitarra(Instrumento):
  16.     def __init__(self, precio, numeroCuerdas):
  17.         Instrumento.__init__(self, precio)
  18.         self.numeroCuerdas = numeroCuerdas
  #3 (permalink)  
Antiguo 18/10/2011, 19:58
 
Fecha de Ingreso: septiembre-2011
Mensajes: 42
Antigüedad: 12 años, 7 meses
Puntos: 3
Respuesta: Ejemplo de herencia en clases

Muchas gracias razpeitia ;)
__________________
"Porque nada se...
quiero saberlo todo"

Etiquetas: clases, ejemplo, herencia, usar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:09.