Alternate Syntax for dictionary elements

Emile van Sebille emile at fenx.com
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):
        self.__dict__.update(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:
    pass


HTH,

--

Emile van Sebille
emile at fenx.com

---------
"Gerson Kurz" <gerson.kurz at t-online.de> wrote in message
news:3b421046.1836046 at news.t-online.de...
> 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