3
3
4
4
fpdt = str (Path (__file__ ).absolute ().parent / "periodic_table.json" )
5
5
_pdt = loadfn (fpdt )
6
+ ELEMENTS = ['H' , 'He' , 'Li' , 'Be' , 'B' , 'C' , 'N' , 'O' , 'F' , 'Ne' , 'Na' , 'Mg' , 'Al' , 'Si' , 'P' , 'S' , 'Cl' , 'Ar' , 'K' , 'Ca' , 'Sc' , 'Ti' , 'V' , 'Cr' , \
7
+ 'Mn' , 'Fe' , 'Co' , 'Ni' , 'Cu' , 'Zn' , 'Ga' , 'Ge' , 'As' , 'Se' , 'Br' , 'Kr' , 'Rb' , 'Sr' , 'Y' , 'Zr' , 'Nb' , 'Mo' , 'Tc' , 'Ru' , 'Rh' , 'Pd' , 'Ag' ,\
8
+ 'Cd' , 'In' , 'Sn' , 'Sb' , 'Te' , 'I' , 'Xe' , 'Cs' , 'Ba' , 'La' , 'Ce' , 'Pr' , 'Nd' , 'Pm' , 'Sm' , 'Eu' , 'Gd' , 'Tb' , 'Dy' , 'Ho' , 'Er' , 'Tm' , 'Yb' ,\
9
+ 'Lu' , 'Hf' , 'Ta' , 'W' , 'Re' , 'Os' , 'Ir' , 'Pt' , 'Au' , 'Hg' , 'Tl' , 'Pb' , 'Bi' , 'Po' , 'At' , 'Rn' , 'Fr' , 'Ra' , 'Ac' , 'Th' , 'Pa' , 'U' , 'Np' , \
10
+ 'Pu' , 'Am' , 'Cm' , 'Bk' , 'Cf' , 'Es' , 'Fm' , 'Md' , 'No' , 'Lr' ]
6
11
7
12
class Element :
8
13
9
14
def __init__ (self , symbol : str ):
10
- assert symbol in _pdt . keys ()
15
+ assert symbol in ELEMENTS
11
16
self .symbol = "%s" % symbol
12
17
d = _pdt [symbol ]
13
18
self ._Z = d ['atomic_no' ]
@@ -22,6 +27,12 @@ def __str__(self):
22
27
23
28
def __repr__ (self ):
24
29
return "Element : %s" % self .symbol
30
+
31
+ @classmethod
32
+ def from_Z (cls ,Z ):
33
+ assert (Z > 0 )
34
+ assert (Z < len (ELEMENTS ))
35
+ return cls (ELEMENTS [Z - 1 ])
25
36
26
37
@property
27
38
def Z (self ):
0 commit comments