Profilo di g_garzotto

Nome g_garzotto
Indirizzo email n/a
Messaggi2
  • 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



  • [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