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
# 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)
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