#!/usr/bin/env python # coding: utf-8 # Open In Colab # # Ejemplo constructor, atributos, métodos # ## Fracción # In[1]: class Fraccion: def __init__(self, num=0, den=1): # método constructor. Los parámetros tienen valor por defecto self.num = num self.den = den def multiplica(self, b): num = self.num * b.num den = self.den * b.den r = Fraccion(num, den) return r def imprime(self): print(self.num, "/", self.den) def main(): a = Fraccion(4, 5) print('\na:') a.imprime() b = Fraccion(2, 3) print('\nb:') b.imprime() c = a.multiplica(b) # c es el resultado de multiplicar a por b print('\nc:') c.imprime() z = Fraccion() # si no ponemos argumentos se toman los valores por defecto del constructor print('\nz:') z.imprime() if __name__=="__main__": main() # ## Galletas # In[2]: class Galleta: chocolate = False def __init__(self, forma, sabor): self.forma = forma self.sabor = sabor print(f"Se acaba de crear una galleta {self.forma} y {self.sabor}.") def chocolatear(self): self.chocolatear = True def tiene_chocolate(self): if self.chocolate: print("Soy una galleta chocolateada") else: print("Soy una galleta sin chocolate") g1 = Galleta("cuadrada", "dulce") g2 = Galleta("redonda", "salada") # In[3]: #g3 = Galleta() # ERROR, ya que no hemos proporcionado los atributos # Para evitar el error podemos establecer unos atributos por defecto en el constructor. # In[4]: class Galleta: chocolate = False def __init__(self, forma = None, sabor = None): # añadimos atributos por defecto self.forma = forma self.sabor = sabor print(f"Se acaba de crear una galleta {self.forma} y {self.sabor}.") def chocolatear(self): self.chocolatear = True def tiene_chocolate(self): if self.chocolate: print("Soy una galleta chocolateada") else: print("Soy una galleta sin chocolate") g1 = Galleta("cuadrada", "dulce") g2 = Galleta("redonda", "salada") g3 = Galleta() # ahora no da error, aunque la frase no es buena # In[5]: class Galleta: chocolate = False def __init__(self, forma = None, sabor = None): self.forma = forma self.sabor = sabor if forma is not None and sabor is not None: print(f"Se acaba de crear una galleta {self.forma} y {self.sabor}.") def chocolatear(self): self.chocolatear = True def tiene_chocolate(self): if self.chocolate: print("Soy una galleta chocolateada") else: print("Soy una galleta sin chocolate") g1 = Galleta("cuadrada", "dulce") g2 = Galleta("redonda", "salada") g3 = Galleta() # ahora se crea sin error y sin frase # ## Planetas # In[6]: class Planeta: def __init__(self, nombre, radio, gravedad): self.nombre = nombre self.radio = radio # en Km self.gravedad = gravedad # m/seg^2 self.sistema = "Solar" # todos los planetas de esta clase pertenecen al sistema Solar def orbita(self): return f'{self.name} orbita en el sistema {self.sistema}' tierra = Planeta('Tierra', 6371, 9.8) mercurio = Planeta('Mercurio', 2440, 3.7) jupiter = Planeta('Júpiter', 69911, 24.8) print(f"El radio de la {tierra.nombre} es de {tierra.radio} Km, una gravedad de {tierra.gravedad} y pertenece al sistema {tierra.sistema}.")