"spir" <denis.s...@free.fr> wrote

Can someone explain the following?

Not really an explanation but I did notice when repeating your
experiment that your class instance has a __dict__ attribute
but object does not. The new attribute a is apparently
located in the dict.

class C(object): pass
...
o = object()
c = C()
c.a = 6
dir(c)
['__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__', '__hash_ _', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr_
_', '__setattr__', '__str__', '__weakref__', 'a']
dir(o)
['__class__', '__delattr__', '__doc__', '__getattribute__', '__hash__', '__init_ _', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str_
_']

print c.__dict__
{'a': 6}

And the dict exists before the new attribuite is created:

d = C()
dir(d)
['__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__', '__hash_ _', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr_
_', '__setattr__', '__str__', '__weakref__']

Does that help? I don't know.
Why does a class inheriting from object acquire a dict when object doesn't have one?

I'm sure somebody can explain but its not me...

Alan G.


_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to