Небольшой модуль Python для работы с числовыми свойствами геометрических фигур.
В настоящее время поддерживает:
- Circle: площадь круга по радиусу
- Triangle: площадь треугольника по длинам сторон (формула Герона) и проверка на прямой угол
Распакуйте архив или установите как пакет:
unzip pysquare.zip
cd pysquare
pip install .from shapes import Circle, Triangle
# Вычисление площади круга
c = Circle(radius=2.5)
print(f"Площадь круга: {c.area():.2f}")
# => Площадь круга: 19.63
# Вычисление площади треугольника
t = Triangle(a=3, b=4, c=5)
print(f"Площадь треугольника: {t.area():.2f}")
# => Площадь треугольника: 6.00
# Проверка на прямой угол
print("Прямой угол?", t.is_right)
# => Прямой угол? True
# Смешанный список фигур
objs = [Circle(1), Triangle(5,12,13)]
for obj in objs:
print(f"{type(obj).__name__}: {obj.area()}")Абстрактный базовый класс. Все конкретные фигуры должны наследоваться от Shape и реализовывать метод:
def area(self) -> floatУниверсальная функция, вызывающая shape.area().
- Конструктор:
radius— радиус круга - Метод:
area() → float
- Конструктор: три длины сторон (
a,b,c).
ВызываетValueError, если стороны не образуют треугольник. - Метод:
area() → float(формула Герона) - Свойство:
is_right → bool— проверяет, является ли треугольник прямоугольным
Модуль включает тесты pytest:
pip install pytest
pytest -qТесты проверяют:
- Корректные вычисления площадей круга и треугольника
- Ошибку для некорректного треугольника
- Детекцию прямого угла
- Расширяемость через реестр
Чтобы добавить свою фигуру:
- Наследуйтесь от
Shapeв каталогеshapes/и реализуйтеarea(self) -> float. - Теперь вы можете вызывать
obj.area()без правки существующего кода.
from shapes.base import Shape, area
class Square(Shape):
def __init__(self, side: float):
self.side = side
def area(self) -> float:
return self.side ** 2
s = Square(4)
print(s.area()) # 16.0MIT License