On Thu, 2008-04-17 at 13:53 -0400, Steve Holden wrote: > Gary Herron wrote: > > [EMAIL PROTECTED] wrote: > >> On Apr 17, 10:54 am, [EMAIL PROTECTED] wrote: > >> > >>> On 17 avr, 17:40, [EMAIL PROTECTED] wrote: > >>> > >>> Out of sheer curiosity, why do you need thirty (hand-specified and > >>> dutifully commented) names to the same constant object if you know > >>> there will always be only one object? > >>> > >> I'm building a web server. The many variables are names of header > >> fields. One part of the code looks like this (or at least I'd like it > >> to): > >> > >> class RequestHeadersManager: > >> > >> # General header fields > >> Cache_Control = \ > >> Connection = \ > >> Date = \ > >> Pragma = \ > >> Trailer = \ > >> Transfer_Encoding = \ > >> Upgrade = \ > >> Via = \ > >> Warning = \ > >> > >> # Request header fields > >> Accept = \ > >> Accept_Charset = \ > >> Accept_Encoding = \ > >> Accept_Language = \ > >> Authorization = \ > >> ... > >> > > > > But. *What's the point* of doing it this way. I see 14 variables > > being assigned a value, but I don't see the value, they are getting. > > Reading this bit if code provides no useful information unless I'm > > willing to scan down the file until I find the end of this mess. And in > > that scanning I have to make sure I don't miss the one single line that > > does not end in a backslash. (Your ellipsis conveniently left out the > > *one* important line needed to understand what this code is doing, but > > even if you had included it, I'd have to scan *all* lines to understand > > what a single value is being assigned. > > > > There is *no way* you can argue that code is clearer than this: > > > > # General header fields > > Cache_Control = None > > Connection = None > > Date = None > > Pragma = None > > ... > > > Thank you, you saved me from making that point. It doesn't even seem > like there's a need for each header to reference the same value (though > in this case they will, precisely because there is only one None object). > > regards > Steve
Another possibility is to assign to a dict using a loop, if typing None over and over again is so onerous. options = ['cache_control', 'connection', 'date', 'pragma'] params = {} for option in options: params[option] = None And of course you could substitute your choice of appropriate __dict__ for params, if you want to access the options as free-standing objects. Cheers, Cliff -- http://mail.python.org/mailman/listinfo/python-list