GUI Frames and classmethod

Zak Arntson zak.arntson at gmail.com
Mon Dec 6 22:38:44 CET 2004


On Mon, 06 Dec 2004 13:08:15 -0800, Scott David Daniels
<scott.daniels at acm.org> wrote:
> Zak Arntson wrote:
> > On Fri, 03 Dec 2004 14:48:30 -0800, Scott David Daniels
> Most likely so.  Possibly an equal amount of has work -- hash of a pair
> is a function of hashes of the lelements, but fewer trips in and out of
> the interpretter.  So, one less lookup, less refcount fiddling, and
> fewer dispatches through the interpretter.
> 
> The real advantage is clarity: the inner dictionaries in a dict-of-dict
> implementation have no real "meaning."  The extra overhead (in the mind
> of the program reader) involved in creating inner dictionaries at
> appropriate times makes the code harder to understand.
> 
> --Scott David Daniels
> Scott.Daniels at acm.org

I feel differently (though I'd accept being in the minority on this
one). If you have a dictionary of tuples where the first member is an
often-repeated value, then it makes more sense (again, to me) to split
it up.

So if I see:
{("None", "Enter"): enter_state_None,
 ("None", "During"): during_state_None,
 ("None", "Leave"): leave_state_None,
 ("LWait", "Enter"): enter_state_LWait,
 ("LWait", "During"): during_state_LWait,
 ("LWait", "Leave"): leave_state_LWait}

I want to split it up. This is more intuitive for me because it shows
an obvious one-many relationship between the outer keys and the inner
keys.
{"None": {"Enter": enter_state_None, "During": during_state_None,
"Leave": leave_state_None},
 "LWait": {"Enter": enter_state_LWait, "During": during_state_Lwait,
"Leave": leave_state_LWait}}


I have to confess to not knowing whether one way is more "Pythonic"
than the other. The first method is mostly easier to code with, but
doesn't explicitly state a one-many relationship. The second give
lengthier code for most operations.

-- 
Zak Arntson
http://www.harlekin-maus.com - Games - Lots of 'em



More information about the Python-list mailing list