pre-PEP generic objects

Nick Craig-Wood nick at craig-wood.com
Thu Dec 2 07:46:45 CET 2004


Steven Bethard <steven.bethard at gmail.com> wrote:
>  Nick Craig-Wood wrote:
> > Steven Bethard <steven.bethard at gmail.com> wrote:
> > 
> >> I promised I'd put together a PEP for a 'generic object' data type for 
> >> Python 2.5 that allows one to replace __getitem__ style access with 
> >> dotted-attribute style access (without declaring another class).  Any 
> >> comments would be appreciated!
> > 
> > My experience from using this is that whenever I used Hash(), I found
> > that later on in the refinement of the conversion it became its own
> > class.
> 
>  This has also generally been my experience, though I'm not sure it's as 
>  true for the XML DOM to Bunch translation.  Did you use Hash() in the 
>  same way for hierarchical data?

Hash() got nested yes, but not in a general purpose structure like
your XML example.
> 
> > So my take on the matter is that this encourages perl style
> > programming (just ram it in a hash, and write lots of functions acting
> > on it) rather than creating a specific class for the job which is dead
> > easy in python anyway and to which you can attach methods etc.
> 
>  You'll note that the (pre-)PEP explicitly notes that this object is 
>  intended only for use when no methods are associated with the attributes:
> 
>  "When no methods are to be associated with the attribute-value mappings,
>  declaring a new class can be overkill."
> 
>  I do understand your point though -- people might not use Bunch in the 
>  way it's intended.  Of course, those same people can already do the same 
>  thing with a dict instead (e.g. write a bunch of functions to handle a 
>  certain type of dict).  If someone wants to write Perl in Python, 
>  there's not much we can really do to stop them...

No there isn't ;-)

The above does make it a lot more convenient though blob['foo'] is
rather difficult to type compared to blob.foo!

-- 
Nick Craig-Wood <nick at craig-wood.com> -- http://www.craig-wood.com/nick



More information about the Python-list mailing list