下列 shape 类是一个表示形状的抽象类,area( )为求图形面积的函数,total( )则 是一个通用的用以求不同形状的图形面积总和的函数。请从 shape 类派生三角形 类(triangle)、矩形类(rectangle),并给出具体的求面积函数。通过册
时间: 2024-05-03 22:19:24 浏览: 70
子类对象,调用 total( ) 函数,求出三角形和矩形的面积总和。
```python
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def area(self):
pass
@staticmethod
def total(shapes):
return sum(shape.area() for shape in shapes)
class Triangle(Shape):
def __init__(self, base, height):
self.base = base
self.height = height
def area(self):
return 0.5 * self.base * self.height
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
# 测试
shapes = [Triangle(4, 5), Rectangle(3, 6), Triangle(2, 8)]
total_area = Shape.total(shapes)
print(total_area) # 输出:32.0
```
注:上述代码中,`Shape` 类是一个抽象类,其中的 `area()` 方法是一个抽象方法,必须在子类中进行实现。`Triangle` 类和 `Rectangle` 类均继承自 `Shape` 类,并且实现了 `area()` 方法。在 `total()` 方法中,我们利用了 Python 的列表推导式和 `sum()` 函数来计算不同形状的图形面积总和。最后我们创建了三个图形对象,将它们作为参数传递给 `total()` 方法,并输出结果。
阅读全文