设计一个抽象类shape和它的两个子类square和circle,要求如下:
时间: 2024-03-05 22:52:21 浏览: 68
好的,我来为您设计这个抽象类和子类。
首先,我们来定义shape这个抽象类,它应该包含以下属性和方法:
属性:
- color:表示图形的颜色。
- filled:表示图形是否填充。
方法:
- get_area():获取图形的面积。
- get_perimeter():获取图形的周长。
- is_filled():判断图形是否填充。
代码如下:
```python
from abc import ABC, abstractmethod
class Shape(ABC):
def __init__(self, color, filled):
self.color = color
self.filled = filled
@abstractmethod
def get_area(self):
pass
@abstractmethod
def get_perimeter(self):
pass
def is_filled(self):
return self.filled
```
接下来,我们来定义square和circle这两个子类。它们应该继承shape类,并实现get_area()和get_perimeter()方法。
首先是square类,它应该包含以下属性和方法:
属性:
- side:表示正方形的边长。
方法:
- get_area():获取正方形的面积。
- get_perimeter():获取正方形的周长。
代码如下:
```python
class Square(Shape):
def __init__(self, color, filled, side):
super().__init__(color, filled)
self.side = side
def get_area(self):
return self.side ** 2
def get_perimeter(self):
return self.side * 4
```
接下来是circle类,它应该包含以下属性和方法:
属性:
- radius:表示圆的半径。
方法:
- get_area():获取圆的面积。
- get_perimeter():获取圆的周长。
代码如下:
```python
import math
class Circle(Shape):
def __init__(self, color, filled, radius):
super().__init__(color, filled)
self.radius = radius
def get_area(self):
return math.pi * self.radius ** 2
def get_perimeter(self):
return 2 * math.pi * self.radius
```
这样,我们就完成了shape抽象类和它的两个子类square和circle的设计。
希望我的回答能够帮助到您!
阅读全文