diff --git a/sklearn/feature_selection/from_model.py b/sklearn/feature_selection/from_model.py
index bbd379c9d1d8275f3db035e93acc1f8b3b5e522c..c8a0679247f160009006aabd945421b51d6fc884 100644
--- a/sklearn/feature_selection/from_model.py
+++ b/sklearn/feature_selection/from_model.py
@@ -14,17 +14,16 @@ from ..exceptions import NotFittedError
 
 def _get_feature_importances(estimator):
     """Retrieve or aggregate feature importances from estimator"""
-    if hasattr(estimator, "feature_importances_"):
-        importances = estimator.feature_importances_
+    importances = getattr(estimator, "feature_importances_", None)
 
-    elif hasattr(estimator, "coef_"):
+    if importances is None and hasattr(estimator, "coef_"):
         if estimator.coef_.ndim == 1:
             importances = np.abs(estimator.coef_)
 
         else:
             importances = np.sum(np.abs(estimator.coef_), axis=0)
 
-    else:
+    elif importances is None:
         raise ValueError(
             "The underlying estimator %s has no `coef_` or "
             "`feature_importances_` attribute. Either pass a fitted estimator"
diff --git a/sklearn/feature_selection/rfe.py b/sklearn/feature_selection/rfe.py
index bbe0cda39229059a5864550cc9dbf94fff8fada5..42b7a12c0aa5434f671f0605c2d7dd203d7b2559 100644
--- a/sklearn/feature_selection/rfe.py
+++ b/sklearn/feature_selection/rfe.py
@@ -171,9 +171,9 @@ class RFE(BaseEstimator, MetaEstimatorMixin, SelectorMixin):
             # Get coefs
             if hasattr(estimator, 'coef_'):
                 coefs = estimator.coef_
-            elif hasattr(estimator, 'feature_importances_'):
-                coefs = estimator.feature_importances_
             else:
+                coefs = getattr(estimator, 'feature_importances_', None)
+            if coefs is None:
                 raise RuntimeError('The classifier does not expose '
                                    '"coef_" or "feature_importances_" '
                                    'attributes')