from math import pi class FiguraGeometrica: def area(self): raise NotImplementedError('metodo area non implementato') def perimetro(self): raise NotImplementedError('metodo perimetro non implementato') def __str__(self): return "Figura geometrica generica" class Cerchio(FiguraGeometrica): def __init__(self,r): self.r = r def area(self): print('Area cerchio = ', pi*self.r**2) def perimetro(self): print('Circonferenza cerchio = ', 2.*pi*self.r) def __str__(self): return "Cerchio con raggio {0}".format(self.r) class Quadrato(FiguraGeometrica): def __init__(self,l): self.l = l def area(self): print('Area quadrato = ',self.l**2) def perimetro(self): print('Perimetro quadrato = ',4.*self.l) def __str__(self): return "Quadrato con lato {0}".format(self.l) class Rettangolo(FiguraGeometrica): def __init__(self,a,b): self.a = a self.b = b def area(self): print('Area Rettangolo =', self.a*self.b) def perimetro(self): print('Perimetro Rettangolo =', 2.*(self.a + self.b)) def __str__(self): return "Rettangolo con lati {0} e {1}".format(self.a,self.b) if __name__== '__main__': import sys try: listafigure = [FiguraGeometrica(), Cerchio(1.0), Quadrato(1.0), Rettangolo(1.0,2.0)] except Exception as err: print(err) sys.exit(1) for f in listafigure: print('-'*20) print(f) try: f.area() f.perimetro() except Exception as err: print(err)