Clases

Creando y Usando una Clase

Creando la Clase Perro


In [1]:
class Perro(object):
    """Un simple intento de modelar un perro."""
    
    def __init__(self, nombre, edad):
        """Inicializar los atributos de nombre y edad."""
        self.nombre = nombre
        self.edad = edad
        
    def sentarse(self):
        """Simular un perro sentandose en respuesta a un comando."""
        print(self.nombre.title() + " está ahora sentado.")
        
    def rodar(self):
        """Simular un perro rodando en respuesta a un comando."""
        print(self.nombre.title() + " rodó!")

Creando una Instancia de una Clase


In [3]:
mi_perro = Perro('cometa', 6)

print("El nombre de mi perro es " + mi_perro.nombre.title() + ".")
print("Mi perro tiene " + str(mi_perro.edad) + " años de edad.")


El nombre de mi perro es Cometa.
Mi perro tiene 6 años de edad.

Llamando Métodos


In [4]:
mi_perro.sentarse()
mi_perro.rodar()


Cometa está ahora sentado.
Cometa rodó!

Creando Múltiples Instancias


In [8]:
perro_1 = Perro('copito', 7)
perro_2 = Perro('perla', 3)

print("El primer perro se llama " + perro_1.nombre.title() + ".")
print("El perro tiene " + str(perro_1.edad) + " años de edad.")
perro_1.sentarse()

print("")

print("La segunda perra se llama " + perro_2.nombre.title() + ".")
print("La perra tiene " + str(perro_2.edad) + " años de edad.")
perro_2.rodar()


El primer perro se llama Copito.
El perro tiene 7 años de edad.
Copito está ahora sentado.

La segunda perra se llama Perla.
La perra tiene 3 años de edad.
Perla rodó!

Trabajando con Clases e Instancias

La Clase Carro


In [9]:
class Carro(object):
    """Un simple intento de modelar un carro."""
    
    def __init__(self, marca, modelo, anio):
        """Inicializar los atributos para describir un carro."""
        self.marca = marca
        self.modelo = modelo
        self.anio = anio
        
    def get_nombre_descriptivo(self):
        """Devolver un nombre descriptivo formateado cuidadosamente."""
        nombre_largo = str(self.anio) + ' ' + self.marca + ' ' + self.modelo
        return nombre_largo.title()

mi_carro = Carro('chevrolet', 'corsa', '2005')
print(mi_carro.get_nombre_descriptivo())


2005 Chevrolet Corsa

Configurando un Valor por Defecto para un Atributo


In [1]:
class Carro(object):
    """Un simple intento de modelar un carro."""
    
    def __init__(self, marca, modelo, anio):
        """Inicializar los atributos para describir un carro."""
        self.marca = marca
        self.modelo = modelo
        self.anio = anio
        self.lectura_odometro = 0
        
    def get_nombre_descriptivo(self):
        """Devolver un nombre descriptivo formateado cuidadosamente."""
        nombre_largo = str(self.anio) + ' ' + self.marca + ' ' + self.modelo
        return nombre_largo.title()
    
    def leer_odometro(self):
        """Imprimir el kilometraje del carro."""
        print("Este carro ha recorrido " + str(self.lectura_odometro) + " kilómetros.")

mi_carro = Carro('chevrolet', 'corsa', '2005')
print(mi_carro.get_nombre_descriptivo())
mi_carro.leer_odometro()


2005 Chevrolet Corsa
Este carro ha recorrido 0 kilómetros.

Modificando Valores de Atributos

Modificando un Valor de un Atributo Directamente


In [2]:
mi_carro.lectura_odometro = 23
mi_carro.leer_odometro()


Este carro ha recorrido 23 kilómetros.

Modificando un Valor de un Atributo con un Método


In [4]:
class Carro(object):
    """Un simple intento de modelar un carro."""
    
    def __init__(self, marca, modelo, anio):
        """Inicializar los atributos para describir un carro."""
        self.marca = marca
        self.modelo = modelo
        self.anio = anio
        self.lectura_odometro = 0
        
    def get_nombre_descriptivo(self):
        """Devolver un nombre descriptivo formateado cuidadosamente."""
        nombre_largo = str(self.anio) + ' ' + self.marca + ' ' + self.modelo
        return nombre_largo.title()
    
    def leer_odometro(self):
        """Imprimir el kilometraje del carro."""
        print("Este carro ha recorrido " + str(self.lectura_odometro) + " kilómetros.")
        
    def actualizar_odometro(self, kilometraje):
        """
        Configurar la lectura del odómetro a un valor dado.
        Rechazar el cambio si intenta retroceder el odómetro.
        """
        if kilometraje >= self.lectura_odometro:
            self.lectura_odometro = kilometraje
        else:
            print("¡No se puede retroceder el odómetro!")

mi_carro = Carro('chevrolet', 'corsa', '2005')
print(mi_carro.get_nombre_descriptivo())

mi_carro.actualizar_odometro(23)
mi_carro.leer_odometro()


2005 Chevrolet Corsa
Este carro ha recorrido 23 kilómetros.

Incrementando un Valor de un Atributo a través de un Método


In [1]:
class Carro(object):
    """Un simple intento de modelar un carro."""
    
    def __init__(self, marca, modelo, anio):
        """Inicializar los atributos para describir un carro."""
        self.marca = marca
        self.modelo = modelo
        self.anio = anio
        self.lectura_odometro = 0
        
    def get_nombre_descriptivo(self):
        """Devolver un nombre descriptivo formateado cuidadosamente."""
        nombre_largo = str(self.anio) + ' ' + self.marca + ' ' + self.modelo
        return nombre_largo.title()
    
    def leer_odometro(self):
        """Imprimir el kilometraje del carro."""
        print("Este carro ha recorrido " + str(self.lectura_odometro) + " kilómetros.")
        
    def actualizar_odometro(self, kilometraje):
        """
        Configurar la lectura del odómetro a un valor dado.
        Rechazar el cambio si intenta retroceder el odómetro.
        """
        if kilometraje >= self.lectura_odometro:
            self.lectura_odometro = kilometraje
        else:
            print("¡No se puede retroceder el odómetro!")
    
    def incrementar_odometro(self, kilometros):
        """Aumentar la cantidad dada a la lectura del odómetro."""
        self.lectura_odometro += kilometros

mi_carro = Carro('chevrolet', 'corsa', '2005')
print(mi_carro.get_nombre_descriptivo())

mi_carro.actualizar_odometro(23500)
mi_carro.leer_odometro()

mi_carro.incrementar_odometro(100)
mi_carro.leer_odometro()


2005 Chevrolet Corsa
Este carro ha recorrido 23500 kilómetros.
Este carro ha recorrido 23600 kilómetros.

Herencia

El Método init() para una Clase Hijo


In [3]:
class CarroElectrico(Carro):
    """Representa aspectos de un carro específicos a vehículos eléctricos."""
    
    def __init__(self, marca, modelo, anio):
        """Inicializar los atributos de la clase padre."""
        super(CarroElectrico, self).__init__(marca, modelo, anio)
        
mi_tesla = CarroElectrico('tesla', 'modelo s', 2016)
print(mi_tesla.get_nombre_descriptivo())


2016 Tesla Modelo S

Valores por defecto en init()


In [17]:
class SuperClase(object):
    """Ejemplo de superclase con atributos por defecto."""
    
    def __init__(self, atributo1=0, atributo2=None):
        """Inicializar los atributos."""
        self.atributo1 = atributo1
        self.atributo2 = atributo2
        self.atributo3 = 'c'
    
    def get_nombre_descriptivo(self):
        """Devolver un nombre descriptivo formateado cuidadosamente."""
        nombre_largo = str(self.atributo1) + ' ' + str(self.atributo2) + ' ' + self.atributo3
        return nombre_largo.title()

super_objeto = SuperClase()
print(super_objeto.get_nombre_descriptivo())

super_objeto1 = SuperClase(1,'a')
print(super_objeto1.get_nombre_descriptivo())


0 None C
1 A C

In [23]:
class SubClase(SuperClase):
    """Ejemplo de inicialización de una subclase."""
    
    def __init__(self, atributo1=1, atributo2='a'):
        """Inicializar los atributos de la clase padre."""
        super(SubClase, self).__init__(atributo1, atributo2)

sub_objeto = SubClase()
print(sub_objeto.get_nombre_descriptivo())

sub_objeto2 = SubClase(2,'b')
print(sub_objeto1.get_nombre_descriptivo())


1 A C
2 B C