forked from stm-gh/shapesWithTests
-
Notifications
You must be signed in to change notification settings - Fork 0
/
geometry.py
67 lines (49 loc) · 1.38 KB
/
geometry.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# area and perimeter for shapes
# pylint: disable=E0401 # disables interface improperly used warning
import math
from interface import implements, Interface
class ShapeInterface(Interface):
# pylint: disable=W0107 # disables unnecessary pass warning
"""todo"""
def area(self):
"""todo"""
pass
def perimeter(self):
"""todo"""
pass
class Circle(implements(ShapeInterface)):
"""todo"""
def __init__(self, radius):
self.radius = radius
def area(self):
"""todo"""
return math.pi*(self.radius**2)
def perimeter(self):
"""todo"""
return 2*self.radius*math.pi
class Triangle(implements(ShapeInterface)):
"""todo"""
def __init__(self, base, height):
self.base = base
self.height = height
def area(self):
"""todo"""
return 0.5*self.base*self.height
def perimeter(self):
"""todo"""
return self.base+self.height
class Rectangle(implements(ShapeInterface)):
"""todo"""
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
"""todo"""
return self.width*self.height
def perimeter(self):
"""todo"""
return 2*(self.width+self.height)
class Square(Rectangle):
"""todo"""
def __init__(self, side):
super().__init__(side, side)