Commit a5e0c8e7 authored by Robert McGibbon's avatar Robert McGibbon
Browse files

add get_by_atomic_number to element

parent 07426283
...@@ -44,6 +44,7 @@ class Element: ...@@ -44,6 +44,7 @@ class Element:
look up the Element with a particular chemical symbol.""" look up the Element with a particular chemical symbol."""
_elements_by_symbol = {} _elements_by_symbol = {}
_elements_by_atomic_number = {}
def __init__(self, number, name, symbol, mass): def __init__(self, number, name, symbol, mass):
## The atomic number of the element ## The atomic number of the element
...@@ -58,6 +59,16 @@ class Element: ...@@ -58,6 +59,16 @@ class Element:
s = symbol.strip().upper() s = symbol.strip().upper()
assert s not in Element._elements_by_symbol assert s not in Element._elements_by_symbol
Element._elements_by_symbol[s] = self Element._elements_by_symbol[s] = self
if number in Element._elements_by_atomic_number:
other_element = Element._elements_by_atomic_number[number]
if mass < other_element.mass:
# If two "elements" sharethe same atomic number, they're
# probably hydrogen and deuterium, and we want to choose
# the lighter one to put in the table by atomic_number,
# since it's the "canonical" element.
Element._elements_by_atomic_number[number] = self
else:
Element._elements_by_atomic_number[number] = self
@staticmethod @staticmethod
def getBySymbol(symbol): def getBySymbol(symbol):
...@@ -65,11 +76,18 @@ class Element: ...@@ -65,11 +76,18 @@ class Element:
s = symbol.strip().upper() s = symbol.strip().upper()
return Element._elements_by_symbol[s] return Element._elements_by_symbol[s]
@staticmethod
def getByAtomicNumber(atomic_number):
return Element._elements_by_atomic_number[atomic_number]
# This is for backward compatibility. # This is for backward compatibility.
def get_by_symbol(symbol): def get_by_symbol(symbol):
s = symbol.strip().upper() s = symbol.strip().upper()
return Element._elements_by_symbol[s] return Element._elements_by_symbol[s]
def get_by_atomic_number(atomic_number):
return Element._elements_by_atomic_number[atomic_number]
hydrogen = Element( 1, "hydrogen", "H", 1.007947*daltons) hydrogen = Element( 1, "hydrogen", "H", 1.007947*daltons)
deuterium = Element( 1, "deuterium", "D", 2.01355321270*daltons) deuterium = Element( 1, "deuterium", "D", 2.01355321270*daltons)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment