g_garzotto
Profilo di
Nome | g_garzotto |
---|---|
Indirizzo email | n/a |
Messaggi | 2 |
-
- 2020-04-16 20:53:22
- Re: [LUNGO] Accesso a lista di oggetti
- Forum >> Principianti
- Quello che ho postato è una cosa simile a quello che mi serve in realtà.
Sostanzialmente da una chiamata API ricevo una stringa, e sulla base di questa stringa dovrei reperire una serie di parametri che mi permettono di reperire delle informazioni da database.
Ho pensato di organizzare questi parametri come una collection di oggetti, da qui la mia domanda.
Banalmente potevo anche usare un ciclo for..in e interrompere con break quando trovavo quello che mi serviva, volevo vedere se c'era un modo più elegante.
Essendo relativamente nuovo in Python ho ancora in testa un modo di programmare non pythonico, da qui le mie difficoltà.
Grazie comunque
Giuseppe
-
- 2020-04-16 10:06:39
- [LUNGO] Accesso a lista di oggetti
- Forum >> Principianti
- Ciao a tutti,
supponiamo di avere tre classi così definite:
# class that identify a single person class Person(object): def __init__(self, name, surname, email): self.name = name self.surname = surname self.email = email #class that allow iteration of class People class PeopleIterator(object): def __init__(self, people_list): self._iterable = people_list self._index = 0 def __next__(self): if self._index < (len(self._iterable.list)): result = self._iterable.list[self._index] self._index += 1 return result raise StopIteration #class that identify a list of person class People(object): def __init__(self): self.list = [] def add(self, obj): self.list.append(obj) def __iter__(self): return PeopleIterator(self) def __len__(self): return len(self.list)
Con le tre classi così fatte, riesco a fare questo tipo di cose:
amici = People() mario = Person("Mario", "Rossi", "mario.rossi@mail.com") amici.add(mario) alberto = Person("Alberto", "Verdi", "alberto.verdi@mail.com") amici.add(alberto) for amico in amici: print(amico.email)
quello che vorrei riuscire a poter fare sono cose del tipo:
if amici["mario.rossi@mail.com"] is not None: print(amici["mario.rossi@mail.com"].name) guido = amici["guido.neri@mail.com"] if guido is None: print("Guido non è tuo amico")
in pratica cercare all'interno della mia collection di oggetti per un attributo dell'oggetto contenuto
Non so se sia possibile farlo, ho cercato parecchio ma non ho trovato nulla che mi permetta di implementarlo.
Grazie in anticipo
Giuseppe Garzotto