1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- from src.models.abstract_reference import abstract_reference
- from src.errors.argument_exception import argument_exception
- class measurement_unit_model (abstract_reference):
- # Базовая единица измерения
- __base_measurement_unit = None
- # Базовый коэффициент
- __base_coefficient = None
- def __init__(self, base_coefficient, base_measurement=None):
- """
- Args:
- base_measurement (measurement_unit_model): Базовая единица измерения
- base_coefficint (number): Базовый коэффициент
- """
- # Проверяем чтоды base_measurement был типа measurement_unit_model либо None (self-ref)
- if not isinstance(base_measurement, measurement_unit_model)\
- and base_measurement is not None:
- raise argument_exception(
- "Базовая единица измерения должна быть типа measurement_unit_model")
- # Присваиваем self-ref когда не передан base_measurement
- if base_measurement is None:
- self.__base_measurement_unit = self
- else: self.__base_measurement_unit = base_measurement
- try:
- # Пробуем конвертировать коэффициент во float
- self.__base_coefficient = float(base_coefficient)
- except TypeError as e:
- raise argument_exception("Несоответствие типа базового коэффициента")
- @property
- def base_measurement_unit(self):
- """
- Базовая единица измерения
- """
- return self.__base_measurement_unit
-
- @property
- def base_coefficient(self):
- """
- Коэффициент относительно базовой единицы измерения
- """
- return self.__base_coefficient
-
- def to_base_unit(self, value):
- """
- Значение в базовой единице измерения
- """
- return value * self.base_coefficient
|