class Dol_M:
    
    dovoljene_enote = ['mm', 'cm', 'dm', 'm']
    
    def __init__(self, koliko, enota = None):
        if enota is None: # uporabil obliko za enim parametrom
            if not isinstance(koliko, str):
                raise Exception("če uporabimo le en parameter, mora ta biti niz")
            # pretvorimo v "klasično obliko"
            raz = koliko.split()
            koliko = float(raz[0])
            enota = raz[1]
        self.mera = koliko
        self.enota = enota
        
    @property
    def mera(self):
        return self._vr
    @mera.setter
    def mera(self, vred):
        if vred < 0:
            raise Exception("Mera ne more biti negativna!")
        self._vr = vred
        
    @property
    def enota(self):
        return self._enota
    @enota.setter
    def enota(self, vred):
        if vred not in Dol_M.dovoljene_enote:
            raise Exception('Napačna enota!')
        self._enota = vred
        
    def __add__(self, drugi):
        '''Znamo seštevati le enake enote'''
        if self.enota != drugi.enota:
            raise Exception('Znamo seštevati le enake mere!')
        return Dol_M(self.mera + drugi.mera, self.enota)
    
    def __mul__(self, faktor):
        if not isinstance(faktor, (float, int)):
            raise Exception('Množimo le s števili!')
        return Dol_M(self.mera * faktor, self.enota)
    
    def __rmul__(self, faktor):
        return self * faktor
    
        