Shelve newbie??

Rob talon2lm at yahoo.com
Sun Nov 2 23:29:50 EST 2003


Thanks Terry!

I knew my endless IF staments were not effecienct and was going to address
that later, once I got the Shelve thing figured out. I do appreciate your
help.

Rob

"Terry Reedy" <tjreedy at udel.edu> wrote in message
news:A5KdnTWK7aASTDiiRVn-jg at comcast.com...
>
> "Rob" <talon2lm at yahoo.com> wrote in message
> news:wsqdnSfKPajoJziiRVn-gg at comcast.com...
>
> I have not used shelve myself, so cannot answer your question.  But I
> can suggest that you do not use the builting name 'type' for phone
> number types and that you do use letters to store them and a dict to
> display.  So:
>
> > UNKNOWN = 0
> > HOME = 1
> > WORK = 2
> > FAX = 3
> > CELL = 4
>
> becomes
>
> ptypenames = {
>   'U': 'Unknown',
>   'H': 'Home',
>   'W': 'Work',
>   'F': 'Fax',
>   'C': 'Cell',
> }
>
> >  def showtype(self):
> >   if self.type == UNKNOWN: return('Unknown')
> >   if self.type == HOME: return('Home')
> >   if self.type == WORK: return('Work')
> >   if self.type == FAX: return('Fax')
> >   if self.type == CELL: return('Cellular')
>
>   return ptypenames[self.type]
>
> >         print "Please enter the phone type: (0 = Unkown, 1 = Home, 2
> = Work,
> > 3 = Fax, 4 = Cell)"
>
> print "Please enter first letter of the phone type:"
> print ptypenames.values()
>
> >         t = raw_input(':')
>
> t = raw_input(':').upper()
>
> >         if t == '0':
> >             foo.add(n, p, UNKNOWN)
> >         if t == '1':
> >             foo.add(n, p, HOME)
> >         if t == '2':
> >             foo.add(n, p, WORK)
> >         if t == '3':
> >             foo.add(n, p, FAX)
> >         if t == '4':
> >             foo.add(n, p, CELL)
>
> if hasattr(ptypenames, t): foo.add(n,p,t)
> # else: <bad entry>
>
> Besides shortening code, this localizes the type key/word info to one
> master dict.  Rest of code is synchronized to this and will
> automatically continue to work if you change the master list, for
> instance to add a new ptype.
>
> Terry J. Reedy
>
>






More information about the Python-list mailing list