更新
This commit is contained in:
66
Python-100-Days/Day01-15/Day09/shape.py
Normal file
66
Python-100-Days/Day01-15/Day09/shape.py
Normal file
@@ -0,0 +1,66 @@
|
||||
"""
|
||||
|
||||
继承的应用
|
||||
- 抽象类
|
||||
- 抽象方法
|
||||
- 方法重写
|
||||
- 多态
|
||||
|
||||
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())
|
||||
Reference in New Issue
Block a user