3.下列 shape 类是一个表示形状的抽象类,area( )为求图形面积的函数,total( )则 是一个通用的用以求不同形状的图形面积总和的函数。请从 shape 类派生三角形 类(triangle)、矩形类(rectangle),并给出具体的求面积函数。
时间: 2024-05-07 08:23:07 浏览: 40
```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
```
这里定义了一个抽象类 `Shape`,其中包含了一个 `area` 抽象方法和一个静态方法 `total`,用于计算多个形状的面积总和。然后,我们从 `Shape` 派生了 `Triangle` 和 `Rectangle` 类,并在其内部实现了 `area` 方法。
`Triangle` 的 `area` 方法计算三角形的面积,而 `Rectangle` 的 `area` 方法计算矩形的面积。因此,我们可以通过这两个类的对象调用 `area` 方法来计算它们的面积,并且可以通过 `Shape.total` 方法计算多个形状的面积总和。
阅读全文