title: Pandas inheritance causes infinite recursion error
body: <p>I am trying to wrap Pandas's data frame to extend it with more functionality, for example here I am trying to have self._number_cols include the numeric columns. The example below ends with a recursion error.</p>
  
  <p>p.s.
  I defined the _constructor according to the guide here: <a href="https://pandas.pydata.org/pandas-docs/stable/extending.html" rel="nofollow noreferrer">https://pandas.pydata.org/pandas-docs/stable/extending.html</a></p>
  
  <pre><code>import pandas as pd
  
  
  class MyDf(pd.DataFrame):
      _metadata = ['number_cols']
  
      @property
      def _constructor(self):
          return MyDf
  
      @property
      def _constructor_sliced(self):
          return pd.Series
  
      def __init__(self, data=None, index=None, columns=None, dtype=None,
                   copy=False):
          super().__init__(data, index, columns, dtype, copy)
          self._number_cols = self.select_dtypes('number').columns.tolist()
  
  
  if __name__ == "__main__":
      mydf = MyDf({'a': [1, 2], 'b': ['a', 'b']})
      print(mydf._number_cols)
  </code></pre>
  
  <p>Error:</p>
  
  <pre><code>  File "/Users/user/Library/Preferences/PyCharm2018.3/scratches/scratch.py", line 17, in __init__
      self._number_cols = self.select_dtypes('number').columns.tolist()
    File "/Users/user/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py", line 3091, in select_dtypes
      return self.loc[com._get_info_slice(self, dtype_indexer)]
    File "/Users/user/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py", line 1472, in __getitem__
      return self._getitem_tuple(key)
    File "/Users/user/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py", line 890, in _getitem_tuple
      retval = getattr(retval, self.name)._getitem_axis(key, axis=i)
    File "/Users/user/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py", line 1868, in _getitem_axis
      return self._getbool_axis(key, axis=axis)
    File "/Users/user/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py", line 1498, in _getbool_axis
      raise self._exception(detail)
  KeyError: KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(KeyError(RecursionError('maximum recursion depth exceeded in comparison',),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),),)
  R
  </code></pre>