Mi chiedo se sia possibile aggiungere campi agli oggetti dinamicamente. Per esempio, io voglio essere in grado di aggiungere qualcosa come:Python: aggiunta dinamica di campi agli oggetti
user = object()
user.first_name = 'John'
user.last_name = 'Smith'
Quando eseguo che in Python da riga di comando interprete ottengo:
AttributeError: 'object' object has no attribute 'first_name'
Qualche idea?
Grazie, che ha lavorato per me. Ho due domande 1) Cosa significa la parola chiave 'pass' qui? 2) Se ho un'altra istanza obj2 di Object() nel mio codice, obj.x creerà obj2.x (con qualche valore non definito)? – Rafid
1) Per quanto riguarda 'pass': http://docs.python.org/tutorial/controlflow.html#pass-statements 2) No, quando si esegue' obj.x = 5', si aggiunge solo l'attributo 'x' a singola istanza di 'Object'. Se vuoi che tutte le istanze di 'Object' condividano x, devi fare' Object.x = 5'. – gruszczy
Non esiste qualcosa come un valore non definito in Python - il più vicino possibile è "Nessuno". Gli oggetti creati nel modo in cui gruszczy propone non hanno alcun tipo di "prototipo"; è possibile aggiungere ed eliminare attributi a piacere e non ha alcun effetto su altre istanze della classe Object. –