"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