##### abc.图形抽象基类设计
```python
from abc import ABC, abstractmethod
# 继承抽象基类ABC来定义抽象基类Shape
class Shape(ABC):
@abstractmethod # 抽象方法 用于计算面积
def area(self):
pass
@abstractmethod # 抽象方法 用于计算周长
def perimeter(self):
pass
# 定义子类 Circle,实现基类中定义的抽象方法
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14159 * self.radius ** 2
def perimeter(self):
return 2 * 3.14159 * self.radius
# 定义子类 Rectangle,实现基类中定义的抽象方法
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
def perimeter(self):
return 2 * (self.width + self.height)
# 子类实例化
circle = Circle(5)
rectangle = Rectangle(4, 6)
print(f"Circle Area: {circle.area()}")
print(f"Rectangle Perimeter: {rectangle.perimeter()}")
# 继承顺序
Circle.__mro__ # (__main__.Circle, __main__.Shape, abc.ABC, object)
```