Alternate Syntax for dictionary elements

Emile van Sebille emile at
Tue Jul 3 20:56:41 CEST 2001

You can get this effect now by leveraging a minimal class:

class Dict:
    def __init__(self, **kwargs):

dict = Dict( type = 'button', id= 32, name = 'some name' )

if dict.type == 'button':
    print "This works!"

dict.newType = 2

if dict.newType == 2:
    print "So does this"

print repr(dict.__dict__)

If you don't need to initialize the object with named parameters, you can
simplify to using:

class Dict:



Emile van Sebille
emile at

"Gerson Kurz" <gerson.kurz at> wrote in message
news:3b421046.1836046 at
> Please consider the following:
> dict = { 'type' : 'button', 'id': 32, 'name' : 'some name' }
> ...
> if o['type'] == 'button':
> # do something for objects of type button
> Now, take a look at
> if o.type == 'button':
> # do something for objects of type button
> A dictionary can in many cases be interpreted as a dynamically created
> object. And an object should have members; or rather, you should be
> able to access its data in a member-style fashion.
> This change doesn't save you much type overhead - but it makes the
> code look more readable for those uses for which it makes sense to
> treat dictionarys as dynamic objects (and I have lots of uses for
> these).
> I realize that there are possible dictionary keys (such as tuples) for
> which such a syntax is improper; it should be sufficient to make the
> following restrictions:
> - the syntax is only possible for string-typed keys that *qualify as
> valid identifiers*
> - the syntax is only possible for keys that are not part of dir({}).
> The implementation would be a hack that extendes the {}.__methods__
> lookup.
> Worthwile pursuit or total crap ?

More information about the Python-list mailing list