声明一个Shape抽象类,在此基础上派生出矩形Rectangle和圆Circle类,二者都有GetArea( )函数计算对象的面积,GetPerim( )函数计算对象的周长。完成类的设计,其中PI取3.14159。
时间: 2024-05-13 08:15:53 浏览: 99
下面是Shape抽象类以及Rectangle和Circle类的实现代码:
```python
import abc
class Shape(metaclass=abc.ABCMeta):
# 抽象类,定义两个抽象方法
@abc.abstractmethod
def get_area(self):
pass
@abc.abstractmethod
def get_perim(self):
pass
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def get_area(self):
return self.width * self.height
def get_perim(self):
return 2 * (self.width + self.height)
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def get_area(self):
return 3.14159 * self.radius ** 2
def get_perim(self):
return 2 * 3.14159 * self.radius
```
在上述代码中,我们定义了抽象类Shape,并且在其中定义了两个抽象方法get_area和get_perim。这两个方法分别用于计算对象的面积和周长,但是在Shape中并没有具体的实现。因此,我们必须在Rectangle和Circle类中具体实现这两个方法,才能使得Rectangle和Circle类不再是抽象类。
在Rectangle和Circle类中,我们分别定义了构造函数__init__,并在其中初始化了对象的属性。此外,我们还实现了get_area和get_perim方法,具体计算方法根据矩形和圆的不同而有所不同。
下面是一个示例程序,可以用来测试Rectangle和Circle类的实现:
```python
r = Rectangle(3, 5)
print("矩形的面积为:", r.get_area())
print("矩形的周长为:", r.get_perim())
c = Circle(4)
print("圆的面积为:", c.get_area())
print("圆的周长为:", c.get_perim())
```
输出结果为:
```
矩形的面积为: 15
矩形的周长为: 16
圆的面积为: 50.26544
圆的周长为: 25.13272
```
可以看到,我们成功地利用抽象类Shape定义了Rectangle和Circle类,并且在Rectangle和Circle类中具体实现了get_area和get_perim方法,计算了矩形和圆的面积和周长。
阅读全文