What's going on here?

robert no-spam at no-spam-no-spam.invalid
Thu Nov 23 12:16:20 EST 2006


Dale Strickland-Clark wrote:
> Thanks for the answers. I am informed but I don't feel enlightened. 
> 
> It does strike me as odd that an apparently empty subclass should add extra
> function to the base class. 
> 
> Not at all obvious.

Yes. As said, there is missing a __builtin__.Object

object is not an "empty class", but the base builtin-type:

>>> isinstance(int,object)
True

built-in type instances are basically read-only because if ...


>>> (1).spam=1
Traceback (most recent call last):
  File "<interactive input>", line 1, in ?
AttributeError: 'int' object has no attribute 'spam'
>>> 


..would work, that would be very strange. 
Maybe in a mud place language like Ruby, where you can jam and scribble everywhere in the system and in builtins, such things are possible.  


I'd propose to add something trivial like


class Object(object):
   def __init__(self,_d={},**kwargs):
       kwargs.update(_d)
       self.__dict__=kwargs 
   ...

to Python. I use such empty (common) class since all time I can think of - and frequently. 
If there would be a common such Empty class in Python you'd have a lot of advantanges. From ad-hoc instances, "OO-dicts" to reliable pickling of bunches of variables etc.


Robert





More information about the Python-list mailing list