'Return the target :class:`.Column` referenced by this
:class:`.ForeignKey`.
If no target column has been established, an exception
is raised.
.. versionchanged:: 0.9.0
Foreign key target column resolution now occurs as soon as both
the ForeignKey object and the remote Column to which it refers
are both associated with the same MetaData object.'

@util.memoized_property
def column(self):

    if isinstance(self._colspec, util.string_types):
        (parenttable, tablekey, colname) = self._resolve_col_tokens()
        if (tablekey not in parenttable.metadata):
            raise exc.NoReferencedTableError(("Foreign    key    associated    with    column    '%s'    could    not    find    table    '%s'    with    which    to    generate    a    foreign    key    to    target    column    '%s'" % (self.parent, tablekey, colname)), tablekey)
        elif (parenttable.key not in parenttable.metadata):
            raise exc.InvalidRequestError(('Table    %s    is    no    longer    associated    with    its    parent    MetaData' % parenttable))
        else:
            raise exc.NoReferencedColumnError(("Could    not    initialize    target    column    for    ForeignKey    '%s'    on    table    '%s':    table    '%s'    has    no    column    named    '%s'" % (self._colspec, parenttable.name, tablekey, colname)), tablekey, colname)
    elif hasattr(self._colspec, '__clause_element__'):
        _column = self._colspec.__clause_element__()
        return _column
    else:
        _column = self._colspec
        return _column
