Ne peut pas définir les attributs de la classe d'objet

Donc, j'ai été jouer avec Python tout en répondant à des cette question, et j'ai découvert que ce n'est pas valide:

o = object()
o.attr = 'hello'

en raison d'une AttributeError: 'object' object has no attribute 'attr'. Cependant, avec toute la classe héritée de l'objet, il est valide:

class Sub(object):
    pass

s = Sub()
s.attr = 'hello'

Impression s.attr affiche "bonjour" comme prévu. Pourquoi est-ce le cas? Ce qui, dans le langage Python spécification indique que vous ne pouvez pas assigner des attributs à la vanille objets?

Pure conjecture: La object type est immuable et de nouveaux attributs ne peuvent pas être ajoutés? Il semble que ça aurait plus de sens.
S. Lott: Voir la première ligne de cette question. Purement de la curiosité.
Votre titre est trompeur, vous essayez de définir des attributs sur object des instances de classe, pas sur object classe.

OriginalL'auteur Smashery | 2009-10-07