Skip to content

Commit f9d9fe8

Browse files
authored
Efficiency updates for __str__() methods (materialsproject#4446)
1 parent 309caa5 commit f9d9fe8

File tree

1 file changed

+13
-10
lines changed

1 file changed

+13
-10
lines changed

src/pymatgen/core/periodic_table.py

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1088,15 +1088,17 @@ def __repr__(self) -> str:
10881088
return f"Species {self}"
10891089

10901090
def __str__(self) -> str:
1091-
output = self.name if hasattr(self, "name") else self.symbol
1092-
if self.oxi_state is not None:
1093-
abs_charge = formula_double_format(abs(self.oxi_state))
1091+
name = getattr(self, "name", None)
1092+
output = name or self.symbol
1093+
oxi_state = self.oxi_state
1094+
if oxi_state is not None:
1095+
abs_charge = formula_double_format(abs(oxi_state))
10941096
if isinstance(abs_charge, float):
10951097
abs_charge = f"{abs_charge:.2f}" # type: ignore[assignment]
1096-
output += f"{abs_charge}{'+' if self.oxi_state >= 0 else '-'}"
1098+
output += f"{abs_charge}{'+' if oxi_state >= 0 else '-'}"
10971099

1098-
if self._spin is not None:
1099-
spin = self._spin
1100+
spin = self._spin
1101+
if spin is not None:
11001102
output += f",{spin=}"
11011103
return output
11021104

@@ -1484,10 +1486,11 @@ def __repr__(self) -> str:
14841486

14851487
def __str__(self) -> str:
14861488
output = self.symbol
1487-
if self.oxi_state is not None:
1488-
output += f"{formula_double_format(abs(self.oxi_state))}{'+' if self.oxi_state >= 0 else '-'}"
1489-
if self._spin is not None:
1490-
spin = self._spin
1489+
oxi_state = self.oxi_state
1490+
if oxi_state is not None:
1491+
output += f"{formula_double_format(abs(oxi_state))}{'+' if oxi_state >= 0 else '-'}"
1492+
spin = self._spin
1493+
if spin is not None:
14911494
output += f",{spin=}"
14921495
return output
14931496

0 commit comments

Comments
 (0)