1
1

measurement_unit_model.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. from src.models.abstract_reference import abstract_reference
  2. from src.errors.argument_exception import argument_exception
  3. class measurement_unit_model (abstract_reference):
  4. # Базовая единица измерения
  5. __base_measurement_unit = None
  6. # Базовый коэффициент
  7. __base_coefficient = None
  8. def __init__(self, base_coefficient, base_measurement=None):
  9. """
  10. Args:
  11. base_measurement (measurement_unit_model): Базовая единица измерения
  12. base_coefficint (number): Базовый коэффициент
  13. """
  14. # Проверяем чтоды base_measurement был типа measurement_unit_model либо None (self-ref)
  15. if not isinstance(base_measurement, measurement_unit_model)\
  16. and base_measurement is not None:
  17. raise argument_exception(
  18. "Базовая единица измерения должна быть типа measurement_unit_model")
  19. # Присваиваем self-ref когда не передан base_measurement
  20. if base_measurement is None:
  21. self.__base_measurement_unit = self
  22. else: self.__base_measurement_unit = base_measurement
  23. try:
  24. # Пробуем конвертировать коэффициент во float
  25. self.__base_coefficient = float(base_coefficient)
  26. except TypeError as e:
  27. raise argument_exception("Несоответствие типа базового коэффициента")
  28. @property
  29. def base_measurement_unit(self):
  30. """
  31. Базовая единица измерения
  32. """
  33. return self.__base_measurement_unit
  34. @property
  35. def base_coefficient(self):
  36. """
  37. Коэффициент относительно базовой единицы измерения
  38. """
  39. return self.__base_coefficient
  40. def to_base_unit(self, value):
  41. """
  42. Значение в базовой единице измерения
  43. """
  44. return value * self.base_coefficient