Domanda Richimare tutti i valori di un attributo in una classe

Maxwell2609

Utente Silver
29 Ottobre 2020
138
25
33
75
Salve, ho un problema con uno script. Ho bisogno di ottenere una lista contenente tutti i valori di un attributo in una classe. Ecco un esempio per spiegarlo al volo:
Python:
class persone:
    def __init__(self, nome, cognome):
        self.nome = nome
        self.cognome = cognome
        
P1 = persone("Silvio", "Bianchi")
P2 = persone.("Mario", "Rossi")

il mio scopo è ottenere una lista con i nomi del genere:
Python:
lista = ["Silvio", "Mario"]

Grazie in anticipo
 
Li inserisci in un array e poi usi un ciclo for. Volendo puoi inserire l'array come campo statico della classe per automatizzare il processo di inserimento, poi però il garbage collector non è più in grado di eliminare le istanze.
 
Li inserisci in un array e poi usi un ciclo for. Volendo puoi inserire l'array come campo statico della classe per automatizzare il processo di inserimento, poi però il garbage collector non è più in grado di eliminare le istanze.
Ok, da quanto ho capito però dovrei modificare manualmente l'array ogni volta che aggiungo nomi. Esiste un modo per richiamare automaticamente tutti i valori? Ad esempio, prendendo lo script di prima, persone.nome (PS. questo comando genera un errore, è solo un esempio per far capire meglio lo scopo)
Grazie
 
Python:
class Persona:
    instances = []
    def __init__(self, nome, cognome):
        self.nome = nome
        self.cognome = cognome
        Persona.instances.append(self)

P1 = Persona("Silvio", "Bianchi")
P2 = Persona("Mario", "Rossi")

for p in Persona.instances: print(p.nome)

Però, ripeto, quando una variabile viene distrutta l'istanza rimane presente nella lista. Non so se ti può andar bene comunque.
 
  • Grazie
Reazioni: Maxwell2609