@classmethod
def from_string(cls, formula, phase=None, charge=0):
    """
		Create a new :class:`Species` object by parsing a string

		Analogous to :meth:`Formula.from_string` but with the addition that
		the phase is determined from the formula.

		Parameters
		----------
		formula: str
			e.g. 'H2O', 'NaCl(s)', 'CO2(aq)', 'CO2(g)'
		phase: Either "s", "l", "g", or "aq". ``None`` represents an unknown phase.
		
		Examples
		--------
		>>> water = Species.from_string('H2O')
		>>> water.phase
		None
		>>> NaCl = Species.from_string('NaCl(s)')
		>>> NaCl.phase
		s
		>>> Hg_l = Species.from_string('Hg(l)')
		>>> Hg_l.phase
		l
		>>> CO2g = Species.from_string('CO2(g)')
		>>> CO2g.phase
		g
		>>> CO2aq = Species.from_string('CO2(aq)')
		>>> CO2aq.phase
		aq
		"""
    if phase is None:
        for p in cls._phases:
            if formula.endswith(f'({p})'):
                phase = p
                break
    f = super().from_string(formula, charge)
    f.phase = phase
    return f
