请编写一个基类Shape,在此基础上派生出类Rectangle和Circle,二者都有计算对象面积的函数getArea()、计算对象周长的函数getPerim()。
时间: 2024-02-21 15:58:07 浏览: 77
好的,这是一个简单的实现:
```python
import math
class Shape:
def getArea(self):
pass
def getPerim(self):
pass
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def getArea(self):
return self.width * self.height
def getPerim(self):
return 2 * (self.width + self.height)
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def getArea(self):
return math.pi * self.radius ** 2
def getPerim(self):
return 2 * math.pi * self.radius
```
在这里,我们定义了一个基类 `Shape`,它包含了两个纯虚函数 `getArea()` 和 `getPerim()`,这两个函数的实现将在其子类中进行。我们还定义了两个派生类 `Rectangle` 和 `Circle`,它们重写了 `getArea()` 和 `getPerim()` 函数来计算矩形和圆的面积和周长。
在 `Rectangle` 类中,我们定义了 `__init__()` 函数来初始化矩形的宽度和高度,并在 `getArea()` 和 `getPerim()` 函数中分别计算矩形的面积和周长。
在 `Circle` 类中,我们定义了 `__init__()` 函数来初始化圆的半径,并在 `getArea()` 和 `getPerim()` 函数中分别计算圆的面积和周长。
这样,我们就可以使用这两个类来计算矩形和圆的面积和周长了。例如:
```python
r = Rectangle(10, 20)
print(r.getArea()) # 输出 200
print(r.getPerim()) # 输出 60
c = Circle(5)
print(c.getArea()) # 输出 78.53981633974483
print(c.getPerim()) # 输出 31.41592653589793
```
阅读全文