On 04/11/12 01:40, Albert-Jan Roskam wrote:
Hi, sorry about that. Here's a copy/pastable version. I also added
a 'data' parameter as my original code was too synthetic in this
respect.
The more realistically, the data come from some getter method.
I don't understand what you mean by that.
import bisect
class TestOne(object):
def __init__(self, data, param="x"):
self.param = param
self.data = data #<------ NOTE: this would in reality be a getter
method of some sort
???
def get(self, key, default=None):
sorted_ = "sorted_" + self.param
if not hasattr(self, sorted_):
setattr(self, sorted_, sorted(self.data))
return bisect.bisect_right(getattr(self, sorted_), x=key)
Default isn't used here. What's it for?
The name of this method, and its argument, are misleading. It isn't
a "get" method, like dicts have, it doesn't take a key and return an
item associated with that key. What you've actually written is a
complicated version of list.index, except that you can't distinguish
between item found and item not found.
The get() method is supposed to mimic the dict.get method.
But it doesn't.
I want to do stuff like:
c = TestOne(data=blah, param="ssn") # ---> c.sorted_snn
c.get(432123, "social security number not found")
d = TestOne(data=blah, param="gender") # ---> d.sorted_gender
d.get("female", "sorry, only blokes here")
Sounds like you want a dict.
--
Steven
_______________________________________________
Tutor maillist - [email protected]
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor