Alternate Syntax for dictionary elements
Quinn Dunkan
quinn at hork.ugcs.caltech.edu
Tue Jul 3 15:25:31 EDT 2001
More information about the Python-list mailing list
Tue Jul 3 15:25:31 EDT 2001
- Previous message (by thread): Alternate Syntax for dictionary elements
- Next message (by thread): Alternate Syntax for dictionary elements
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Tue, 03 Jul 2001 18:45:05 GMT, Gerson Kurz <gerson.kurz at t-online.de> wrote: >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 Won't work because of {}.keys, etc. If you don't mind those name clashes, you could write __getattr__ and __setattr__ to simulate this. It's not advisable, though, because container access is a clearly seperate concept from object access in python. It has a different syntax and a different conceptual purpose, even though there is some implementation overlap (e.g. o.__dict__). If you want object access notation, you should probably be using an object, not a dictionary. For example, your button above is probably not suited for dictionaryhood. In Lua, on the other hand, tables and objects are truly the same, and foo.bar is syntactic sugar for foo['bar']. Lua's object model is rather weaker and more do-it-yourself than python's, though. And here's why using a dict as you did above is probably silly: You don't need to manually encode type information if the language can do it for you. Making a Button class will automatically attach that type to its instances. Furthermore, a fundamental property of all objects (as opposed to true values like an algebraic data type) is that they have unique ids seperate from their values. The language will maintain them for you, and to fetch them you can use the id() function. The 'name' field is the only necessary one. "Yes", you're saying, "but it was only an example." :)
- Previous message (by thread): Alternate Syntax for dictionary elements
- Next message (by thread): Alternate Syntax for dictionary elements
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list