Duplicar posible:
Why can't I directly add attributes to any python object?
Why can't you add attributes to object in python?¿Qué hace que los objetos definidos por el usuario no arrojen AttributeError en Python?
El siguiente código no lanza AttributeError
class MyClass():
def __init__(self):
self.a = 'A'
self.b = 'B'
my_obj = MyClass()
my_obj.c = 'C'
Eso contrasta con
>>> {}.a = 'A'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'dict' object has no attribute 'a'
¿Qué hace esa diferencia? ¿Se trata de que Dict sea una clase incorporada mientras MyClass está definido por el usuario?
La verdadera pregunta es más * qué hace que algunos objetos arrojen AttributeErrors al establecer * - Python es dinámico, por lo que es natural que usted pueda hacer esto, y no al revés. –
posible duplicado: http://stackoverflow.com/questions/1285269/why-cant-you-add-attributes-to-object-in-python http://stackoverflow.com/questions/1072649/python-language-question -attributes-of-object-vs-function – mgilson
El primer enlace dado por mgilson arriba tiene una buena respuesta. –