On Thu, Jan 26, 2012 at 8:47 PM, Guido van Rossum <guido@python.org> wrote:
On Thu, Jan 26, 2012 at 9:25 AM, anatoly techtonik <techtonik@gmail.com> wrote:
> I expected to find the answer to this question in FAQ, but because there is
> no FAQ I ask it anyway.
>
> How about adding a new standard dict-like container type that allows access
> using . (dot) to its members instead of ['index']?
> Why? It is convenient to write options.help instead of options['halp'] etc.
>
> Example:
>>>> mydict = container(someprop=somevalue)
>>>> mydict['someprop']
> somevalue
>>>> mydict.someprop
> somevalue
>>>> mydict.otherprop
> Exception KeyError ...
>
> I know that it is easy to implement, but wouldn't it be nice to make it
> available by default?
> A side benefit of having this in stdlib is that newbies will be aware of the
> behaviour of derived classes without having to understand the mechanics of
> magic methods.

That is pretty much JavaScript's 'object', and I hate this ambiguity.
If your keys are always constants, define a proper options class so
you can say options.help instead of options['help']. You can also
write a generic subclass of dict that works this way, if you really
think you like it so much. But please keep it out of the stdlib. It
leads to confused users, not happy users. An example of the problems
that arise: If d['a'] == d.a, then how come d['clear'] != d.clear ?

In which case d['clear'] != d.clear can be true?


I've found a MIT licensed library that implements just that:
http://pypi.python.org/pypi/bunch/

Q. Why it is better than subclass of object?
A. Because it is implicit.
-- 
anatoly t.