设计一个抽象类图形类,在该类中包含有至少三个抽象方法,分别用于求周长、求面积,以及对图形进行描述(如,“这是**形状,周长是**,面积是**”),分别定义圆形类、长方形类、等边三角形类来继承图形类,实现上述三个方法,并创建实例验证。
时间: 2023-08-19 12:05:03 浏览: 251
好的,我明白了。以下是抽象类图形类的设计:
```python
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def perimeter(self):
pass
@abstractmethod
def area(self):
pass
@abstractmethod
def description(self):
pass
```
然后我们定义圆形类、长方形类、等边三角形类来继承图形类:
```python
import math
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def perimeter(self):
return 2 * math.pi * self.radius
def area(self):
return math.pi * self.radius ** 2
def description(self):
return f"这是一个圆形,半径是{self.radius},周长是{self.perimeter()},面积是{self.area()}。"
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def perimeter(self):
return 2 * (self.width + self.height)
def area(self):
return self.width * self.height
def description(self):
return f"这是一个长方形,宽度是{self.width},高度是{self.height},周长是{self.perimeter()},面积是{self.area()}。"
class EquilateralTriangle(Shape):
def __init__(self, side_length):
self.side_length = side_length
def perimeter(self):
return 3 * self.side_length
def area(self):
return (math.sqrt(3) / 4) * self.side_length ** 2
def description(self):
return f"这是一个等边三角形,边长是{self.side_length},周长是{self.perimeter()},面积是{self.area()}。"
```
最后,我们创建实例并验证:
```python
circle = Circle(5)
print(circle.description())
rectangle = Rectangle(3, 4)
print(rectangle.description())
equilateral_triangle = EquilateralTriangle(5)
print(equilateral_triangle.description())
```
输出:
```
这是一个圆形,半径是5,周长是31.41592653589793,面积是78.53981633974483。
这是一个长方形,宽度是3,高度是4,周长是14,面积是12。
这是一个等边三角形,边长是5,周长是15,面积是10.825317547305483。
```
阅读全文