measurement_unit_model.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. from src.models.abstract_reference import abstract_reference
  2. from src.validation.validator import validator
  3. class measurement_unit_model (abstract_reference):
  4. # Базовая единица измерения
  5. __base_measurement_unit = None
  6. # Базовый коэффициент
  7. __base_coefficient = None
  8. # Валидатор
  9. __vtor = validator()
  10. def __init__(self, name, base_coefficient = 1, base_measurement=None):
  11. """
  12. Args:
  13. base_measurement (measurement_unit_model): Базовая единица измерения
  14. base_coefficint (number): Базовый коэффициент
  15. """
  16. self.__vtor.check_type_any(base_measurement, measurement_unit_model, None)
  17. self.__vtor.check_number(base_coefficient)
  18. self.__base_measurement_unit = base_measurement
  19. self.__base_coefficient = base_coefficient
  20. super().__init__(name)
  21. @property
  22. def base_measurement_unit(self):
  23. """
  24. Базовая единица измерения
  25. """
  26. if self.__base_measurement_unit is None:
  27. return self
  28. return self.__base_measurement_unit
  29. @property
  30. def base_coefficient(self):
  31. """
  32. Коэффициент относительно базовой единицы измерения
  33. """
  34. return self.__base_coefficient
  35. def to_base_unit(self, value):
  36. """
  37. Значение в базовой единице измерения
  38. """
  39. return value * self.base_coefficient