martes, 30 de julio de 2019

Python: Referencia Rápida parte 2. Clases

Segunda parte de las referencias rápidas de Python.


CLASE BÁSICA

class Coche():

    # Variable de clase compartida por todas las instancias.
    # Si se modifica, afecta a todos los coches creados a partir de esta clase.
    # Todos los coches tendrán 4 ruedas.
    numeroRuedas = 4

    # Constructor.
    def __init__(self, marca):
        # Variable de instancia única para la instancia.
        # Cada coche puede tener una marca distinta.
        self.marca = marca
        # Crea una nueva lista vacía de accesorios para cada coche.
        # Cada coche puede tener una lista de accesorios distinta.
        self.listaAccesorios = []
   
    # Método que muestra la marca de un coche.
    def saludar(self):
        print("Hola, soy un coche de la marca: " + self.marca)

# Creamos dos objetos de la clase, pasando la marca por parámetro.
coche_1 = Coche("Toyota")
coche_2 = Coche("Ford")

# Llamamos al método saludar del coche 2.
coche_2.saludar()


HERENCIA

# Clase que hereda de las clases "VehiculoElectrico" y "Vehiculo".
# Se tiene en cuenta el orden de la herencia múltiple a la hora de conflicto entre padres.
# En este caso, "VehiculoElectrico" tendrá preferencia sobre "Vehiculo" en caso de conflicto.
class BicicletaElectrica(VehiculoElectrico, Vehiculo):
  
    # Con la función "super" podemos llamar a una función de la clase padre que hayamos sobreescrito en la clase hija.
    super().nombreFuncionPadre()
  
# Creamos un objeto "BicicletaElectrica" y comprobamos que también lo es de las clases "VehiculoElectrico" y "Vehiculo".
bici1 = BicicletaElectrica()
print(isinstance(bici1, BicicletaElectrica)) # True
print(isinstance(bici1, VehiculoElectrico)) # True
print(isinstance(bici1, Vehiculo)) # True

POLIMORFISMO

class Coche():
    def desplazamiento(self):
        print("Me desplazo utilizando 4 ruedas.")
       
class Moto():
    def desplazamiento(self):
        print("Me desplazo utilizando 2 ruedas.")
       
class Camion():
    def desplazamiento(self):
        print("Me desplazo utilizando 6 ruedas.")
       
def desplazamientoVehiculo(vehiculo)
    vehiculo.desplazamiento()

coche = Coche()
moto = Moto()
camion = Camion()

desplazamientoVehiculo(coche)
desplazamientoVehiculo(moto)
desplazamientoVehiculo(camion)

# En Java para que funcione el polimorfismo hubiéramos tenido que crear una clase Vehiculo de la que hereden las 3 y tendríamos que haber definido el parámetro como tipo Vehiculo en la función desplazamientoVehiculo.
 
OBTENER LA CLASE A LA QUE PERTENECE UN OBJETO

instance.__class__.__name__

No hay comentarios:

Publicar un comentario