💾Clases y Objetos
Trabajando con Clases y Objetos
1. Definiendo una clase
class Coche():
"""Esta clase representa a un coche"""
def __init__(self, modelo, potencia, consumo):
"""Inicializa los atributos de instancia
Argumentos posicionales:
modelo -- str que representa el modelo del coche
potencia -- int que representa la potencia en cv
consumo -- int que presententa el consumo en l/100km
"""
self.modelo = modelo
self.potencia = potencia
self.consumo = consumo
def especificaciones(self):
"""Muestra las especificaciones del coche"""
print("Modelo: ", self.modelo,
"\nPotencia: {} cv".format(self.potencia),
"\nConsumo: {} l/100km".format(self.consumo),
)
help(Coche)
Help on class Coche in module __main__:
class Coche(builtins.object)
| Coche(modelo, potencia, consumo)
|
| Esta clase representa a un coche
|
| Methods defined here:
|
| __init__(self, modelo, potencia, consumo)
| Inicializa los atributos de instancia
|
| Argumentos posicionales:
| modelo -- str que representa el modelo del coche
| potencia -- int que representa la potencia en cv
| consumo -- int que presententa el consumo en l/100km
|
| especificaciones(self)
| Muestra las especificaciones del coche
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
mercedes = Coche("Mercedes c200", 180, 7)
mercedes.especificaciones()
Modelo: Mercedes c200
Potencia: 180 cv
Consumo: 7 l/100km
2. Atributos con valores por defecto
class Coche():
"""Esta clase representa a un coche"""
def __init__(self, modelo, potencia, consumo):
"""Inicializa los atributos de instancia
Argumentos posicionales:
modelo -- str que representa el modelo del coche
potencia -- int que representa la potencia en cv
consumo -- int que presententa el consumo en l/100km
"""
self.modelo = modelo
self.potencia = potencia
self.consumo = consumo
self.km_actuales = 0 # Valor por defecto
def especificaciones(self):
"""Muestra las especificaciones del coche"""
print("Modelo: ", self.modelo,
"\nPotencia: {} cv".format(self.potencia),
"\nConsumo: {} l/100km".format(self.consumo),
"\nKilometros Actuales: ", self.km_actuales
)
mercedes = Coche("Mercedes c200", 180, 7)
mercedes.especificaciones()
Modelo: Mercedes c200
Potencia: 180 cv
Consumo: 7 l/100km
Kilometros Actuales: 0
3. Modificando los valores de los atributos de un objeto
La manera más sencilla de modificar el valor de un atributo de un objeto es utilizando la sintaxis:
<objeto>.<atributo> = <nuevo_valor>
mercedes.km_actuales = 200
mercedes.especificaciones()
Modelo: Mercedes c200
Potencia: 180 cv
Consumo: 7 l/100km
Kilometros Actuales: 200
Por otro lado, existe una práctica mejor a la hora de modificar los atributos de la clase que consiste en hacerlo a través de un método especialmente creado para ello.
Esto nos permite realizar operaciones adicionales dentro de nuestro objeto siempre que se recibe un nuevo valor de un atributo.
class Coche():
"""Esta clase representa a un coche"""
def __init__(self, modelo, potencia, consumo):
"""Inicializa los atributos de instancia
Argumentos posicionales:
modelo -- str que representa el modelo del coche
potencia -- int que representa la potencia en cv
consumo -- int que presententa el consumo en l/100km
"""
self._modelo = modelo
self._potencia = potencia
self._consumo = consumo
self._km_actuales = 0
def especificaciones(self):
"""Muestra las especificaciones del coche"""
print("Modelo: ", self._modelo,
"\nPotencia: {} cv".format(self._potencia),
"\nConsumo: {} l/100km".format(self._consumo),
"\nKilometros Actuales: ", self._km_actuales
)
def actualizar_kilometros(self, kilometros):
"""Actualiza los kilometros del coche"""
if kilometros > self._km_actuales:
self._km_actuales = kilometros
else:
print("ERROR: No se puede establecer un número de kilometros inferior al actual")
mercedes = Coche("Mercedes c200", 180, 7)
mercedes.especificaciones()
Modelo: Mercedes c200
Potencia: 180 cv
Consumo: 7 l/100km
Kilometros Actuales: 0
mercedes.actualizar_kilometros(1500)
mercedes.especificaciones()
Modelo: Mercedes c200
Potencia: 180 cv
Consumo: 7 l/100km
Kilometros Actuales: 1500
mercedes.actualizar_kilometros(500)
ERROR: No se puede establecer un número de kilometros inferior al actual
4. Extendiendo la funcionalidad de nuestra clase
class Coche():
"""Esta clase representa a un coche"""
def __init__(self, modelo, potencia, consumo):
"""Inicializa los atributos de instancia
Argumentos posicionales:
modelo -- str que representa el modelo del coche
potencia -- int que representa la potencia en cv
consumo -- int que presententa el consumo en l/100km
"""
self._modelo = modelo
self._potencia = potencia
self._consumo = consumo
self._km_actuales = 0
def especificaciones(self):
"""Muestra las especificaciones del coche"""
print("Modelo: ", self._modelo,
"\nPotencia: {} cv".format(self._potencia),
"\nConsumo: {} l/100km".format(self._consumo),
"\nKilometros Actuales: ", self._km_actuales
)
def actualizar_kilometros(self, kilometros):
"""Actualiza los kilometros del coche"""
if kilometros > self._km_actuales:
self._km_actuales = kilometros
else:
print("ERROR: No se puede establecer un número de kilometros inferior al actual")
def consumo_total(self):
"""Muestra el consumo total del coche desde el km 0"""
consumo_total = (self._km_actuales / 100) * self._consumo
print("El consumo total es de {} litros".format(consumo_total))
mercedes = Coche("Mercedes c200", 180, 7)
mercedes.consumo_total()
El consumo total es de 0.0 litros
mercedes.actualizar_kilometros(100)
mercedes.consumo_total()
El consumo total es de 7.0 litros
mercedes.actualizar_kilometros(148_250)
mercedes.consumo_total()
El consumo total es de 10377.5 litros
Última actualización