I have 2 classes one inherits from it to calculate the perimeter and surface of a figure, the problem is that the function of the special str method does not return all the methods correctly
class Figura(object):
def __init__(self,nombre):
self.nombre = nombre
class Cuadrado(Figura):
def __init__(self,nombre,lado):
if (nombre == 'Cuadrado'):
if isinstance(lado, int):
Figura.__init__(self, lado)
self.lado=lado
self.perimetro=0
self.superficie=0
else:
raise TypeError("El valor del atributo lado debe ser numerico")
else:
raise TypeError("El valor del atributo nombre debe ser cuadrado")
def calcularPerimetro(self,lado):
perimetro = 4 * lado
if perimetro > 15:
print("El valor del perimetro es mayor a 15")
elif perimetro < 15:
print("El valor del perimetro es menor que 15")
return perimetro
def calcularSuperficie(self,lado):
superficie = lado * lado
if superficie % 2==0:
print("El valor de la superficie es par")
else:
print("El valor de la superficie es impar")
return superficie
#Aqui es el fallo que me surge
def __str__(self):
cadena = "Un cuadrado de lado " + str(self.lado) + " tiene un perimetro " + str(self.perimetro) + " y una superficie de " + str(self.perimetro)
return cadena
This is the main
from EjercicioExamenFigura import *
nombre=input("Que nombre tiene tu figura")
lado=int(input("Cuanto mide el lado de tu figura"))
cuadrado1=Cuadrado(nombre,lado)
print(cuadrado1.calcularPerimetro(lado))
print(cuadrado1.calcularSuperficie(lado))
print(cuadrado1)
Print this to me
Que nombre tiene tu figura Cuadrado
Cuanto mide el lado de tu figura 4
El valor del perimetro es mayor a 15
16
El valor de la superficie es par
16
Un cuadrado de lado 4 tiene un perimetro 0 y una superficie de 0
A square on side 4 has a perimeter of 0 and a surface of 0