# Реализовать проект расчета суммарного расхода ткани на производство одежды. Основная сущность (класс) этого проекта —
# одежда, которая может иметь определенное название. К типам одежды в этом проекте относятся пальто и костюм.
# У этих типов одежды существуют параметры: размер (для пальто) и рост (для костюма). Это могут быть обычные числа:
# V и H, соответственно.
# Для определения расхода ткани по каждому типу одежды использовать формулы: для пальто (V/6.5 + 0.5), для костюма
# (2*H + 0.3). Проверить работу этих методов на реальных данных.
# Реализовать общий подсчет расхода ткани. Проверить на практике полученные на этом уроке знания: реализовать
# абстрактные классы для основных классов проекта, проверить на практике работу декоратора @property.


from abc import ABC, abstractmethod, abstractproperty


class Clother(ABC):
    @abstractmethod
    def square(self):
        pass


class Coat(Clother):
    def __init__(self, size):
        self.size = size

    @property
    def square(self):
        # В каких единицах измерения указывается размер пальто я не нашел. Но это не мешает выполнению рассчета
        # согласно предоставленной формуле в ПЗ.
        result = float(self.size)/6.5 + 0.05
        return f"Для изготовления пальто {self.size} размера понадобится {result:.2f} метра ткани."


class Suit(Clother):
    def __init__(self, size):
        self.size = size

    @property
    def square(self):
        # Данная формула нуждается в пояснении, т.к. в интернете говорится что "две длины изделия + 0.3"
        # Значит при создании объекта класса мы должны указывать величину костюма в метрах, либо указывать в см.,
        # но при этом в формуле делить на 10 переводя в метры.
        result = float(self.size) * 2 + 0.3
        return f"Для изготовления костюма длиной {self.size} м. понадобится {result:.2f} метра ткани."


my_coat = Coat(20)
print(my_coat.square)

my_suit = Suit(1)
print(my_suit.square)
