| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- """
- 继承的应用
- - 抽象类
- - 抽象方法
- - 方法重写
- - 多态
- Version: 0.1
- Author: 骆昊
- Date: 2018-03-12
- """
- from abc import ABCMeta, abstractmethod
- from math import pi
- class Shape(object, metaclass=ABCMeta):
- @abstractmethod
- def perimeter(self):
- pass
- @abstractmethod
- def area(self):
- pass
- class Circle(Shape):
- def __init__(self, radius):
- self._radius = radius
- def perimeter(self):
- return 2 * pi * self._radius
- def area(self):
- return pi * self._radius ** 2
- def __str__(self):
- return '我是一个圆'
- class Rect(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 __str__(self):
- return '我是一个矩形'
- if __name__ == '__main__':
- shapes = [Circle(5), Circle(3.2), Rect(3.2, 6.3)]
- for shape in shapes:
- print(shape)
- print('周长:', shape.perimeter())
- print('面积:', shape.area())
|