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