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