On 2006-09-12, Matthew Wilson <[EMAIL PROTECTED]> wrote: > On Tue 12 Sep 2006 10:06:27 AM EDT, Neil Cerutti wrote: >> Writing a thin wrapper around the dictionary might be >> beneficial, and would also furnish a place for the docstrings. > > I wrote a function that hopefully does just that. I'm not very > savvy at doing this class-factory stuff, so any advice would be > welcome.
I should have chosen my words more carefully. I meant to suggest writing small interfaces for your dictionaries. This sort of trick is often used in Scheme, where lists are used to represent many different data types. Designing and writing a good interface makes the code much easier to understand. Here's a simple-minded example of a dictionary of identifiers for use in an interpreter, which nevertheless demonstrates the advantages of the technique. class IdentError(): pass idents = {} def new_ident(id, initial_value=None): """ Create a new identifier, id, (possibly with an initial_value) and add it to the table of identifiers. Raises IdentError if the identifier already exists. """ if id in idents: raise IdentError else: idents[id] = initial_value def ident_value(id): """ Return the current value of id. Raises IdentError if the identifier is undefined. """ if key not in idents: raise IdentError else: return idents[id] Then the rest of the code uses this tiny interface. -- Neil Cerutti If only faces could talk. --Pat Summerall -- http://mail.python.org/mailman/listinfo/python-list