# -*- coding: utf-8 -*- from Model.Except import NotImplementedMethodeError class Profile(object): def __init__(self, num: int = 0, kp:float = 0.0, name:str = "", code1: int = 0, code2: int = 0, _type:str = "", reach = None): super(Profile, self).__init__() self._num = int(num) self._code1 = int(code1) self._code2 = int(code2) self._kp = float(kp) self._name = str(name) self._reach = reach self._points: List[Point] = [] self._profile_type = _type @property def reach(self): return self._reach @property def num(self): """ Returns: Number of profile. """ return self._num @num.setter def num(self, value: int): self._num = int(value) @property def code1(self): """ Returns: Interpolation code 1. """ return self._code1 @code1.setter def code1(self, value: int): self._code1 = int(value) @property def code2(self): """ Returns: Interpolation code 2. """ return self._code2 @code2.setter def code2(self, value: int): self._code2 = int(value) @property def nb_points(self): return len(self._points) @property def kp(self): """ Returns: Kilometer point. """ return self._kp @kp.setter def kp(self, value: float): self._kp = float(value) @property def name(self): """ Returns: Profile name. """ return self._name @name.setter def name(self, value: str): self._name = value.strip() @property def profile_type(self): """ Returns: Profile type. """ return self._profile_type @profile_type.setter def profile_type(self, value: str): self._profile_type = value def named_points(self): """List of named point Returns: The list of named point """ return [point for point in self._points if point.point_is_named()] # Abstract method, must be implemented for in non abstract class def get_station(self): raise NotImplementedMethodeError(self, self.get_station)