[Python-Dev] 2.3b1, and object()

Guido van Rossum guido@python.org
Wed, 30 Apr 2003 09:59:46 -0400


> On an unrelated note, I'm curious, what's the difference between an 
> instance of an object, and an instance of an empty class?  Calling the 
> object builtin returns an <object object at ...>, which I would expect 
> would function the same as a 'class blah(object): pass', but they do 
> not function similarly at all.
> 
>  >>> class A(object): pass
>  >>> a = A()
>  >>> a.i = 5
>  >>> a.i
> 5
>  >>>
> 
>  >>> a = object()
>  >>> a.i = 5
> Traceback (most recent call last):
>    File "<stdin>", line 1, in ?
> AttributeError: 'object' object has no attribute 'i'

Instances of 'object' don't have an instance dict, so they are
uncapable of having instance variables.  When you use a class
statement, instances of the subclass get an instance dict, unless
__slots__ is used in that class statement.

--Guido van Rossum (home page: http://www.python.org/~guido/)