Update Python Ofensivo
This commit is contained in:
parent
be1177090b
commit
9d7531b0f1
34
python-ofensivo/00_ejercicios/04_ejemplo_clase3.py
Normal file
34
python-ofensivo/00_ejercicios/04_ejemplo_clase3.py
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
Ejemplo de clases y objetos en Python
|
||||||
|
"""
|
||||||
|
|
||||||
|
class rectangulo:
|
||||||
|
|
||||||
|
def __init__(self, base, altura):
|
||||||
|
|
||||||
|
self.base = base
|
||||||
|
|
||||||
|
self.altura = altura
|
||||||
|
|
||||||
|
@property
|
||||||
|
def area(self):
|
||||||
|
|
||||||
|
return self.base * self.altura
|
||||||
|
|
||||||
|
# Propiedad especiales de la clase
|
||||||
|
def __str__(self):
|
||||||
|
|
||||||
|
return f"\n[+]Propiedades del rectangulo:\n\t[+] Base: {self.base}\n\t[+] Altura: {self.altura}\n"
|
||||||
|
|
||||||
|
def __eq__(self, otro):
|
||||||
|
|
||||||
|
return self.base == otro.base and self.altura == otro.altura
|
||||||
|
|
||||||
|
|
||||||
|
rect1 = rectangulo(3, 4)
|
||||||
|
rect2 = rectangulo(3, 4)
|
||||||
|
|
||||||
|
print(rect1)
|
||||||
|
print(f"[+] El area del rectangulo es: {rect1.area}\n")
|
||||||
|
print(f"[+] ¿Son iguales rect1 y rect2? --> {rect1 == rect2}\n")
|
65
python-ofensivo/00_ejercicios/04_ejemplo_clase4.py
Normal file
65
python-ofensivo/00_ejercicios/04_ejemplo_clase4.py
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
Ejemplo de clases y objetos en Python
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
class Libro:
|
||||||
|
|
||||||
|
bestseller_value = 5000 # Variable de clase
|
||||||
|
IVA = 0.21 # Variable de clase
|
||||||
|
|
||||||
|
def __init__(self, titulo, autor, precio, ventas=7000):
|
||||||
|
self.titulo = titulo
|
||||||
|
self.autor = autor
|
||||||
|
self.precio = precio
|
||||||
|
self.ventas = ventas
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return "\n[*] {} escrito por {} tiene un precio de {} euros y se ha vendido {} veces.\n".format(
|
||||||
|
self.titulo,
|
||||||
|
self.autor,
|
||||||
|
self.precio,
|
||||||
|
self.ventas
|
||||||
|
)
|
||||||
|
|
||||||
|
@staticmethod # Decorador
|
||||||
|
def es_best_seller(ventas):
|
||||||
|
if ventas > Libro.bestseller_value: # Las variables de clase se llaman con el nombre de la clase
|
||||||
|
return f"[*] Lo ha petado.\n"
|
||||||
|
else:
|
||||||
|
return f"[*] No lo ha petado.\n"
|
||||||
|
|
||||||
|
@classmethod # Decorador
|
||||||
|
def precio_con_iva(cls, precio):
|
||||||
|
|
||||||
|
precio_con_iva = precio * (1 + cls.IVA) # Las variables se llama con el nombre de la clase
|
||||||
|
|
||||||
|
return round(precio_con_iva, 2)
|
||||||
|
|
||||||
|
|
||||||
|
class LibroDigital(Libro):
|
||||||
|
|
||||||
|
IVA = 0.10
|
||||||
|
|
||||||
|
|
||||||
|
# Instancia
|
||||||
|
mi_libro = Libro("El Quijote", "Miguel de Cervantes", 18.7)
|
||||||
|
mi_libro_digital = LibroDigital("El Quijote", "Miguel de Cervantes", 18.7)
|
||||||
|
|
||||||
|
print(
|
||||||
|
mi_libro
|
||||||
|
)
|
||||||
|
|
||||||
|
# Con el decorador no tienes por qué instanciar el objeto, puedes hacerlo a la clase.
|
||||||
|
print(
|
||||||
|
Libro.es_best_seller(mi_libro.ventas)
|
||||||
|
)
|
||||||
|
|
||||||
|
print(
|
||||||
|
f"[*] El precio con IVA es de {Libro.precio_con_iva(mi_libro.precio)} euros.\n"
|
||||||
|
)
|
||||||
|
|
||||||
|
print(
|
||||||
|
f"[*] El precio con IVA del libro digital es de {LibroDigital.precio_con_iva(mi_libro_digital.precio)} euros.\n"
|
||||||
|
)
|
Loading…
Reference in New Issue
Block a user