Me pregunto si es posible agregar campos a objetos dinámicamente. Por ejemplo, quiero ser capaz de añadir algo como:Python: Agregar campos a objetos dinámicamente
user = object()
user.first_name = 'John'
user.last_name = 'Smith'
Cuando ejecuto que en Python línea de comando intérprete consigo:
AttributeError: 'object' object has no attribute 'first_name'
Alguna idea?
Gracias, que trabajó para mí. Tengo dos preguntas 1) ¿Qué significa la palabra clave 'pasar' aquí? 2) Si tengo otra instancia obj2 de Object() en mi código, obj.x creará obj2.x (con algún valor indefinido)? – Rafid
1) Con respecto a 'pass': http://docs.python.org/tutorial/controlflow.html#pass -statements 2) No, cuando haces' obj.x = 5', solo agregas el atributo 'x' a única instancia de 'Objeto'. Si desea que todas las instancias 'Object' compartan x, debe hacer' Object.x = 5'. – gruszczy
No existe un valor indefinido en Python; lo más parecido que se obtiene es 'None'. Los objetos creados en la forma propuesta por gruszczy no tienen ningún tipo de "prototipo"; puede agregar y eliminar atributos a voluntad, y no tiene efecto en ninguna otra instancia de la clase Object. –