Questa è una domanda molto basilare su OOP (sto usando Python ma in realtà è una domanda concettuale quindi non proprio specifica del linguaggio). Mi sono guardato intorno ma nessun tutorial o libro copre questa specifica domanda. Se non sono chiaro, mi scuso e sarei felice di chiarire qualsiasi cosa abbia scritto.Domanda concettuale del principiante su OOP e persistenza
Diciamo che sto creando una semplice rubrica che voglio scrivere su disco usando pickle. Ho una classe chiamata Contact
dove __init__
accetta alcuni argomenti (firstName e lastName) e ho un menu in cui puoi creare contatti, modificarli ecc. Per tutti gli esempi di OOP ho visto che farebbero qualcosa come ...
bob = Contact('Bob', 'Smith')
jane = Contact('Jane', 'Smith')
... per creare nuove istanze di Contatto. Ma questi sono tutti definiti prima del runtime. Cosa succede quando voglio tutte queste istanze create al volo dall'input dell'utente? Creo nuove istanze per ogni persona? Come farei questo dall'input dell'utente? Quindi basta scrivere tutte le istanze in una lista e metterle sott'aceto? O fai una cosa del genere ...
firstName, lastName = raw_input("Enter first name: "), raw_input("Enter last name: ")
contact = Contact(firstName, lastName)
... poi basta aggiungere il contatto alla lista e ottenere nuovi valori per l'istanza di contatto ogni volta che voglio aggiungere un utente? Questo è un concetto chiave che non sto ottenendo davvero (perché non l'ho visto spiegarlo davvero da nessuna parte). Tutti gli esempi che ho visto non fanno quanto sopra, ma creano nuove istanze per ogni cosa/persona, ma sono tutte predefinite e non create al volo. Sarei davvero grato che qualcuno mi spiegasse questo concetto.
Esiste comunque la possibilità di rendere i dati immessi il nome dell'istanza? O è del tutto inutile? O anche possibile? Sto pensando a qualcosa come dire ... firstName = raw_input ("Qual è il tuo nome ?: ") lastName = raw_input (" Qual è il tuo cognome ?:") eval (firstName) = Contatto (firstName, lastName) – johnharris85
@JHarris - che dipende dalla lingua. PHP e Javascript potrebbero farlo. C++/C# non poteva. Tuttavia, non penso che questo sia il modo giusto di pensare. Se si desidera cercare i contatti per nome, utilizzare un tipo di raccolta "dizionario" ("mappa" in alcune lingue). Inquinare lo spazio dei nomi con variabili per ogni contatto come questo sarebbe dispendioso e persino pericoloso (cosa succede se qualcuno crea un contatto con il nome come una delle tue variabili?) –