One can now do
a = A()
mor = [morphism from X to A]
A.register_coercion(mor)
This works as long as coercion has not yet been used (otherwise information cached (both here and elsewhere) becomes invalid).
CC: @nthiery
Component: coercion
Author: Robert Bradshaw
Reviewer: Nick Alexander
Merged: sage-4.2.alpha1
Issue created by migration from https://trac.sagemath.org/ticket/5598