robert wrote: > Dale Strickland-Clark wrote: > > Python 2.4.2 (#1, Oct 13 2006, 17:11:24) > > [GCC 4.1.0 (SUSE Linux)] on linux2 > > Type "help", "copyright", "credits" or "license" for more information. > >>>> a = object() > >>>> a > > <object object at 0xb7bbd438> > >>>> a.spam = 1 > > Traceback (most recent call last): > > File "<stdin>", line 1, in ? > > AttributeError: 'object' object has no attribute 'spam' > >>>> class b(object): > > ... pass > > ... > >>>> a = b() > >>>> a > > <__main__.b object at 0xb7b4dcac> > >>>> a.spam = 1 > >>>> > > > > What is subclassing adding to the class here? Why can't I assign to > > attributes of an instance of object? > > > Python sooooo dynamic, but it lacks a (builtin) X-class ready for ad-hoc > usage just like dict() :-) > I have in almost every app/toolcore-module this one: > > ------ > > class X(object): > def __init__(self,_d={},**kwargs): > kwargs.update(_d) > self.__dict__=kwargs > class Y(X): > def __repr__(self): > return '<Y:%s>'%self.__dict__ > > ------ > > x=X(spam=1) > > Maybe X should be renamed to __builtin__.Object ... > >
Have you considered putting it in one file and *importing* it into "almost every app/toolcore-module"? Have you considered that others may like to have something a little more elaborate, like maybe using the pprint module, or that the amount of data that would spew out might in some cases be so great that they wouldn't want that every time from repr(), preferring a dump-style method that wrote to a logfile? IMHO that's one of the enormous number of good points about Python; you can easily lash up something like that to suit yourself and inject it into any class you like; there's no central authority tying your hands behind your back. HTH, John -- http://mail.python.org/mailman/listinfo/python-list