超级:超过最大递归深度

Super: maximum recursion depth exceeded

我正在尝试将 class Pandas' DataFrame 替换为另一个 class,与 GeoPandas 中的 GeoDataFrame 相同 here.

然而,我得到了

maximum recursion depth exceeded error

当我 运行:

from pandas import DataFrame

df = pd.DataFrame({'A':[1,2,4], 'B':[4,5,6]})

class NewDataFrame(DataFrame):
    def __init__(self, dataframe: pd.DataFrame) -> None:
        self.dataframe = dataframe
        super(NewDataFrame, self).__init__(dataframe)

    def do_something(self):
        print(self.dataframe.columns)

ndf  = NewDataFrame(df)

完全错误

Traceback (most recent call last):
  File "/Users/as/Documents/projects/model/.venv/lib/python3.7/site-packages/IPython/core/interactiveshell.py", line 3326, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-40-03d15755b527>", line 9, in <module>
    ndf  = NewDataFrame(df)
  File "<ipython-input-40-03d15755b527>", line 3, in __init__
    self.dataframe = dataframe
  File "/Users/as/Documents/projects/model/.venv/lib/python3.7/site-packages/pandas/core/generic.py", line 5092, in __setattr__
    existing = getattr(self, name)
  File "/Users/as/Documents/projects/model/.venv/lib/python3.7/site-packages/pandas/core/generic.py", line 5065, in __getattr__
    if self._info_axis._can_hold_identifiers_and_holds_name(name):
  File "/Users/as/Documents/projects/model/.venv/lib/python3.7/site-packages/pandas/core/generic.py", line 5065, in __getattr__
    if self._info_axis._can_hold_identifiers_and_holds_name(name):
  File "/Users/as/Documents/projects/model/.venv/lib/python3.7/site-packages/pandas/core/generic.py", line 5065, in __getattr__
    if self._info_axis._can_hold_identifiers_and_holds_name(name):
  [Previous line repeated 1484 more times]
  File "/Users/as/Documents/projects/model/.venv/lib/python3.7/site-packages/pandas/core/generic.py", line 428, in _info_axis
    return getattr(self, self._info_axis_name)
  File "/Users/as/Documents/projects/model/.venv/lib/python3.7/site-packages/pandas/core/generic.py", line 5063, in __getattr__
    return object.__getattribute__(self, name)
  File "pandas/_libs/properties.pyx", line 65, in pandas._libs.properties.AxisProperty.__get__
  File "/Users/as/Documents/projects/model/.venv/lib/python3.7/site-packages/pandas/core/generic.py", line 5063, in __getattr__
    return object.__getattribute__(self, name)
RecursionError: maximum recursion depth exceeded while calling a Python object

我知道 and this,但除非我遗漏了什么,否则这两个问题的答案似乎都是我所做的。

我在 Mac OS 10.14.5 和 Python 3.7.3

您的代码中存在无限循环。也许您一直在寻找类似的东西:

from pandas import DataFrame

class NewDataFrame(DataFrame):
    def __init__(self, param) -> None:
        super().__init__(param)

    def do_something(self):
        print(self.columns)

ndf  = NewDataFrame({'A':[1,2,4], 'B':[4,5,6]})