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()
a: 4 / 5 b: 2 / 3 c: 8 / 15 z: 0 / 1
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")
Se acaba de crear una galleta cuadrada y dulce. Se acaba de crear una galleta redonda y salada.
#g3 = Galleta() # ERROR, ya que no hemos proporcionado los atributos
Para evitar el error podemos establecer unos atributos por defecto en el constructor.
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
Se acaba de crear una galleta cuadrada y dulce. Se acaba de crear una galleta redonda y salada. Se acaba de crear una galleta None y None.
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
Se acaba de crear una galleta cuadrada y dulce. Se acaba de crear una galleta redonda y salada.
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}.")
El radio de la Tierra es de 6371 Km, una gravedad de 9.8 y pertenece al sistema Solar.