34
社区成员




import numpy as np class Shape: def __init__(self, name, area, perimeter): self.name = name self.area = area self.perimeter = perimeter def cal_area(self): return f'{self.area:.2f}' def cal_perimeter(self): return f'{self.perimeter:.2f}' def display(self): print(f'{self.name} {self.area:.2f} {self.perimeter:.2f}') class Rectangle(Shape): def __init__(self, name, a, b): super().__init__(name, a * b, 2 * (a + b)) class Triangle(Shape): def __init__(self, name, a, b, c): super().__init__(name, self.triangle_area(a, b, c), a + b + c) @staticmethod def triangle_area(a, b, c): p = 0.5 * (a + b + c) return np.sqrt(p * (p - a) * (p - b) * (p - c)) class Circle(Shape): def __init__(self, name, r): super().__init__(name, 0.5 * np.pi * r ** 2, 2 * np.pi * r) rec = Rectangle('Rectangle', 1, 2) tri = Triangle('Triangle', 1, 2, 3) cir = Circle('Circle', 1) print(rec, tri, cir)