Added __hash__ routines to all Python classes based on __repr__ methods

This commit is contained in:
wbinventor@gmail.com 2015-11-29 09:00:47 -05:00
parent a7c923a82c
commit 4be3c64da9
8 changed files with 23 additions and 19 deletions

View file

@ -58,7 +58,7 @@ class Element(object):
return not self == other
def __hash__(self):
return hash((self._name, self._xs))
return hash(str(self))
def __repr__(self):
string = 'Element - {0}\n'.format(self._name)

View file

@ -81,7 +81,7 @@ class Filter(object):
return not self == other
def __hash__(self):
return hash((self.type, tuple(self.bins)))
return hash(str(self))
def __deepcopy__(self, memo):
existing = memo.get(id(self))

View file

@ -147,7 +147,7 @@ class Geometry(object):
if cell._type == 'normal':
material_cells.add(cell)
material_cells = list(material_cells)
material_cells = list(set(material_cells))
material_cells.sort(key=lambda x: x.id)
return material_cells

View file

@ -108,6 +108,9 @@ class Material(object):
def __ne__(self, other):
return not self == other
def __hash__(self):
return hash(str(self))
def __repr__(self):
string = 'Material\n'
string += '{0: <16}{1}{2}\n'.format('\tID', '=\t', self._id)

View file

@ -189,6 +189,9 @@ class Mesh(object):
cv.check_length('mesh width', width, 2, 3)
self._width = width
def __hash__(self):
return hash(str(self))
def __repr__(self):
string = 'Mesh\n'
string += '{0: <16}{1}{2}\n'.format('\tID', '=\t', self._id)

View file

@ -61,7 +61,7 @@ class Nuclide(object):
return not self == other
def __hash__(self):
return hash((self._name, self._xs))
return hash(str(self))
def __repr__(self):
string = 'Nuclide - {0}\n'.format(self._name)

View file

@ -190,21 +190,7 @@ class Tally(object):
return not self == other
def __hash__(self):
hashable = []
for filter in self.filters:
hashable.append((filter.type, tuple(filter.bins)))
for nuclide in self.nuclides:
hashable.append(nuclide.name)
for score in self.scores:
hashable.append(score)
hashable.append(self.estimator)
hashable.append(self.name)
return hash(tuple(hashable))
return hash(str(self))
def __repr__(self):
string = 'Tally\n'

View file

@ -94,6 +94,9 @@ class Cell(object):
def __ne__(self, other):
return not self == other
def __hash__(self):
return hash(str(self))
def __repr__(self):
string = 'Cell\n'
string += '{0: <16}{1}{2}\n'.format('\tID', '=\t', self._id)
@ -479,6 +482,9 @@ class Universe(object):
def __ne__(self, other):
return not self == other
def __hash__(self):
return hash(str(self))
def __repr__(self):
string = 'Universe\n'
string += '{0: <16}{1}{2}\n'.format('\tID', '=\t', self._id)
@ -964,6 +970,9 @@ class RectLattice(Lattice):
def __ne__(self, other):
return not self == other
def __hash__(self):
return hash(str(self))
def __repr__(self):
string = 'RectLattice\n'
string += '{0: <16}{1}{2}\n'.format('\tID', '=\t', self._id)
@ -1198,6 +1207,9 @@ class HexLattice(Lattice):
def __ne__(self, other):
return not self == other
def __hash__(self):
return hash(str(self))
def __repr__(self):
string = 'HexLattice\n'
string += '{0: <16}{1}{2}\n'.format('\tID', '=\t', self._id)