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