设计一个 Shape 类和它的两个子类 Square 和 Circle。Shape 类表达二维形状概念,Square 表达正方形, Circle 表达圆形。
时间: 2024-03-25 07:37:59 浏览: 138
好的,你可以这样实现:
```python
import math
class Shape:
def area(self):
pass
def perimeter(self):
pass
class Square(Shape):
def __init__(self, side):
self.side = side
def area(self):
return self.side ** 2
def perimeter(self):
return self.side * 4
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return math.pi * self.radius ** 2
def perimeter(self):
return 2 * math.pi * self.radius
```
这里我们定义了一个 Shape 类作为所有二维形状的基类,它包含了两个方法 `area` 和 `perimeter`,用于计算面积和周长。由于 Shape 类本身并不代表具体的二维形状,因此它的这两个方法都只是抽象方法,不实现任何具体的计算逻辑。
然后我们定义了两个子类 Square 和 Circle,它们继承了 Shape 类,并分别表示正方形和圆形。在这两个子类中,我们实现了 `area` 和 `perimeter` 方法,具体计算正方形和圆形的面积和周长。在 Square 类中,我们用 `side` 属性表示正方形的边长;在 Circle 类中,我们用 `radius` 属性表示圆形的半径。
这样,我们就可以通过创建 Square 和 Circle 对象来计算它们的面积和周长了。例如:
```python
square = Square(5)
print(square.area()) # 输出 25
print(square.perimeter()) # 输出 20
circle = Circle(3)
print(circle.area()) # 输出 28.274333882308138
print(circle.perimeter()) # 输出 18.84955592153876
```
阅读全文