can a class instance ever be hashable?
Alex
cut_me_out at hotmail.com
Thu Sep 21 22:01:12 EDT 2000
Here's some old code of mine that might give you some ideas about how to
use __hash__.
class Pattern:
def __init__(self, characters, offsets):
assert len(characters) == len(offsets) + 1
self.characters = characters
self.offsets = offsets
def __hash__(self):
return hash((self.characters, self.offsets))
def __cmp__(self,other):
return cmp((self.characters, self.offsets),
(other.characters, other.offsets))
def __str__(self):
output = []
for character, offset in map(None, self.characters[: -1],
self.offsets):
output.extend([character, offset*'.'])
output.append(self.characters[-1])
return string.join(output, '')
def __repr__(self):
return 'Pattern(\'%s\', %s)' % (self.characters, self.offsets)
def __len__(self):
return len(self.characters)
def positions(self, start):
positions = [start]
for offset in self.offsets:
positions.append(positions[-1] + offset)
return positions
class Pattern:
def __init__(self, characters, offsets):
assert len(characters) == len(offsets) + 1
self.characters = characters
self.offsets = offsets
def __hash__(self):
return hash((self.characters, self.offsets))
def __cmp__(self,other):
return cmp((self.characters, self.offsets),
(other.characters, other.offsets))
def __str__(self):
output = []
for character, offset in map(None, self.characters[: -1],
self.offsets):
output.extend([character, offset*'.'])
output.append(self.characters[-1])
return string.join(output, '')
def __repr__(self):
return 'Pattern(\'%s\', %s)' % (self.characters, self.offsets)
def __len__(self):
return len(self.characters)
def positions(self, start):
positions = [start]
for offset in self.offsets:
positions.append(positions[-1] + offset)
return positions
--
Speak softly but carry a big carrot.
More information about the Python-list
mailing list