Me gustaría saber por qué uno puede crear un nuevo atributo ("nuevo" significa "no definido previamente en el cuerpo de la clase") para una instancia de un tipo personalizado, pero no puede hacer lo mismo para un tipo incorporado, como object
sí mismo.¿Por qué los tipos personalizados aceptan atributos ad-hoc en Python (y los built-ins no)?
Un ejemplo de código:
>>> class SomeClass(object):
... pass
...
>>> sc = SomeClass()
>>> sc.name = "AAA"
>>> sc.name
'AAA'
>>> obj = object()
>>> obj.name = "BBB"
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'object' object has no attribute 'name'