2. Localització (5 punts)¶
La classe Localitzacio especificada a continuació representa un magatzem en el qual es dipositen diversos paquets. El magatzem està dividit en passadissos amb un identificador únic (str). Cada paquet té també un identificador únic (str). La classe guarda informació del passadís en el qual estan dipositats cadascun dels paquets.
- class localitzacions.Localitzacio(nom_empresa, codpost)¶
Crea una instància de la classe que representa la ubicació dels paquets en passadissos. Inicialment no hi ha cap paquet al magatzem.
Atributs
Mètodes:
- quants_paquets(idpas)¶
Retorna el nombre de paquets que hi ha al passadís d’identificador idpas.
- llista_passadis()¶
Retorna una llista ordenada lexicogràficament dels identificadors de passadís del magatzem.
Aquesta classe suporta les operacions següents:
Operació
Resultat
ubi[idpaq]Retorna l’identificador del passadís en el qual es troba el paquet d’identificador idpaq. Es suposa que idpaq és al magatzem ubi.
ubi[idpaq] = pasAssigna al paquet d’identificador idpaq el passadís d’identificador pas. Si idpaq no és al magatzem ubi, l’afegeix.
len(ubi)Retorna el nombre de paquets del magatzem ubi.
idpaq in ubiRetorna True si idpaq és dins ubi i False en cas contrari.
iter(ubi)Retorna un iterador dels codis dels paquets en l’ordre en què s’han anat afegint al magatzem ubi.
Per exemple:
>>> ubi = Localitzacio('BrimoSA', '08028')
>>> ubi.nom
'BrimoSA'
>>> ubi.codi_postal
'08028'
>>> len(ubi)
0
>>> ubi['XRT56'] = '1A'
>>> ubi['XRT56']
'1A'
>>> 'XRT56' in ubi and 'HJG45' not in ubi
True
>>> ubi['AAB56'] = '1B'
>>> ubi['POI89'] = '1A'
>>> len(ubi)
3
>>> ubi.quants_paquets('1A')
2
>>> ubi.quants_paquets('2B')
0
>>> ubi.llista_passadis()
['1A', '1B']
>>> list(iter(ubi))
['XRT56', 'AAB56', 'POI89']
Implementeu aquesta classe en el mòdul localitzacions (fitxer localitzacions.py). Per a implementar aquesta classe heu de crear un atribut privat que sigui un diccionari les claus del qual siguin els identificadors de paquet i els valors siguin els identificadors del passadís en què es troba cadascun dels paquets.
Nota: Recordeu que des de la versió 3.7 de python, els diccionaris estan ordenats per ordre d’inserció.
Disposeu de més jocs de prova al fitxer tests-localitzacio.txt.