0% found this document useful (0 votes)
22 views2 pages

Polygon

The document defines a Polygon abstract base class and three subclasses - Triangle, Quadrilateral, and Pentagon. Polygon initializes with side lengths and number of sides. The subclasses override the perimeter and area methods to calculate these values specific to each shape type. Examples are provided to create objects of each subclass and print their perimeter and area.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
22 views2 pages

Polygon

The document defines a Polygon abstract base class and three subclasses - Triangle, Quadrilateral, and Pentagon. Polygon initializes with side lengths and number of sides. The subclasses override the perimeter and area methods to calculate these values specific to each shape type. Examples are provided to create objects of each subclass and print their perimeter and area.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 2

Polygon:

from abc import abstractmethod, ABCMeta


import math
class Polygon(metaclass = ABCMeta):
def __init__ (self, side_lengths = [1,1,1], num_sides = 3):
self._side_lengths = side_lengths
self._num_sizes = 3
@abstractmethod
def area(self):
pass
@abstractmethod
def perimeter(self):
pass
def __repr__(self):
return (str(self._side_lengths))
class Triangle(Polygon):
def __init__(self, side_lengths):
super().__init__(side_lengths, 3)
self._perimeter = self.perimeter()
self._area = self.area()
def perimeter(self):
return(sum(self._side_lengths))
def area(self):
#Area of Triangle
s = self._perimeter/2
product = s
for i in self._side_lengths:
product*=(s-i)
return(product**0.5)
class Quadrilateral(Polygon):
def __init__(self, side_lengths):
super().__init__(side_lengths, 4)
self._perimeter = self.perimeter()
self._area = self.area()
def perimeter(self):
return(sum(self._side_lengths))
def area(self):
# Area of an irregular Quadrilateral
semiperimeter = sum(self._side_lengths) / 2
return math.sqrt((semiperimeter - self._side_lengths[0])
*(semiperimeter -
self._side_lengths[1]) *(semiperimeter -
self._side_lengths[2]) *(semiperimeter -
self._side_lengths[3]))
class Pentagon(Polygon):
def __init__(self, side_lengths):
super().__init__(side_lengths, 5)
self._perimeter = self.perimeter()
self._area = self.area()
def perimeter(self):
return((self._side_lengths) * 5)
def area(self):
# Area of a regular Pentagon
a = self._side_lengths
return (math.sqrt(5 * (5 + 2 * (math.sqrt(5)))) * a * a) / 4
#object of Triangle
t1 = Triangle([2,6,2])
print(t1.perimeter(), t1.area())
#object of Quadrilateral
q1 = Quadrilateral([1,1,1,1])
print(q1.perimeter(), q1.area())
#object of Pentagon
p1 = Pentagon(1)
print(p1.perimeter(), p1.area())

output:
10 3.872983346207417
4 1.0
5 1.720477400588967

You might also like