Je me demande s'il est possible d'ajouter dynamiquement des champs aux objets. Par exemple, je veux être en mesure d'ajouter quelque chose comme:Python: Ajout dynamique de champs aux objets
user = object()
user.first_name = 'John'
user.last_name = 'Smith'
Quand j'exercerai que interpretor de ligne de commande Python je reçois:
AttributeError: 'object' object has no attribute 'first_name'
Toute idée?
Merci, qui a travaillé pour moi. J'ai deux questions 1) Qu'est-ce que le mot clé 'pass' signifie ici? 2) Si j'ai une autre instance obj2 de Object() dans mon code, obj.x va-t-il créer obj2.x (avec une valeur indéfinie)? – Rafid
1) En ce qui concerne 'pass': http://docs.python.org/tutorial/controlflow.html#pass-statements 2) Non, quand vous faites' obj.x = 5', vous ajoutez seulement l'attribut 'x' instance unique de 'Object'. Si vous voulez que toutes les instances 'Object' partagent x, vous devez faire' Object.x = 5'. – gruszczy
Il n'existe pas de valeur indéfinie dans Python - le plus proche est 'None'. Les objets créés de la manière proposée par Gruszczy n'ont aucun type de "prototype"; vous pouvez ajouter et supprimer des attributs à volonté, et cela n'a aucun effet sur les autres instances de la classe Object. –