Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/10/2011, 17:13
AlanFC
 
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"