Herramientas de usuario

Herramientas del sitio


informatica:programacion:python:poo

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
informatica:programacion:python:poo [2021/02/10 16:29] – [Herencia] tempwininformatica:programacion:python:poo [2021/10/10 13:47] (actual) – [Recursos] tempwin
Línea 4: Línea 4:
  
 <WRAP center round info 60%> <WRAP center round info 60%>
-En Python todo es un objeto+En Python todo es un objeto. El tipo más básico de objeto en Python es ''object''. Las clases que creemos serán subclases de ''object'', por lo que ''object'' será la superclase de todo el resto de clases.
 </WRAP> </WRAP>
  
Línea 106: Línea 106:
  
 <code python> <code python>
-gorrion = pajaro('gorrion', '20'', 'marrón')+gorrion = pajaro('gorrion', ''20'', 'marrón')
 </code> </code>
  
Línea 243: Línea 243:
  
     def __init__(self):     def __init__(self):
-        # Llamamos al constructor de la clase padre 
-        Car.__init__(self) 
-         
         print("Acabas de crear una instancia de Coche")         print("Acabas de crear una instancia de Coche")
                  
Línea 262: Línea 259:
  
     def __init__(self):     def __init__(self):
 +        # Llamamos al constructor de la clase padre
 +        Car.__init__(self)   
 +
         print("Acabas de crear una instancia de Renault")         print("Acabas de crear una instancia de Renault")
  
Línea 275: Línea 275:
 r.parar() r.parar()
 </code> </code>
 +
 +
 +==== Sobrescritura de métodos ====
 +
 +Si queremos redefinir algún método de la clase padre, basta con definirlo con el mismo nombre en la clase heredada y darle la funcionalidad que queramos:
 +
 +<code python>
 +class Renault(Coche):
 +
 +    def __init__(self):
 +        # Llamamos al constructor de la clase padre
 +        Car.__init__(self)   
 +
 +        print("Acabas de crear una instancia de Renault")
 +
 +    def arrancar(self):
 +        print("Arrancando el Renault")
 +</code>
 +
 +Si quisiéramos hacer referencia a un método de la clase padre, utilizamos ''super'':
 +
 +<code python>
 +(...)
 +    def arrancar(self):
 +        super().arrancar()
 +        print("Arrancando el Renault")
 +</code>
 +
 +===== Imprimir la representación de un objeto =====
 +
 +Python llama al método ''%%__%%str%%__%%'' cuando utilizamos ''print'' sobre un objeto. Por defecto, mostrará algo como:
 +
 +Si queremos decidir qué imprimirá, crearemos nosotros un método ''%%__%%str%%__%%'' en nuestra clase:
 +
 +<code python>
 +class Coordenada(object):
 +    def__init__(self, x, y):
 +        self.x = x
 +        self.y = y
 +        
 +    def __str__(self):
 +        return "<" + str(self.x) + ", " + str(self.y) + ">"
 +</code>
 +
 +<WRAP center round important 60%>
 +''%%__%%str%%__%%'' debe devolver un string
 +</WRAP>
 +
 +==== Operadores especiales ====
 +
 +Hay una serie de operadores que al utilizarlos en Python, llama a ciertos métodos de los objetos:
 +
 +^ Método                 ^ Operador ^
 +| ''%%__%%add%%__%%''     | ''self + other''  |
 +| ''%%__%%sub%%__%%''     | ''self - other''  |
 +| ''%%__%%eq%%__%%''      | ''self == other''  |
 +| ''%%__%%lt%%__%%''      | ''self < other''  |
 +| ''%%__%%len%%__%%''     | ''len(self)''  |
 +| ''%%__%%str%%__%%''     | ''print(self)''  |
 +
 +
 +  * https://docs.python.org/3/reference/datamodel.html#basic-customization
 +
 +===== Recursos =====
 +
 +  * [[https://www.youtube.com/watch?v=-DP1i2ZU9gk|8. Object Oriented Programming]] (YouTube)
informatica/programacion/python/poo.1612970941.txt.gz · Última modificación: por tempwin