Python:在源代码内初始化类会导致NameError

Python:在源代码内初始化类会导致NameError,python,nameerror,Python,Nameerror,我是一个巨蟒noobie,仍在学习诀窍 初始化GroupBy(_GroupBy)会导致我的代码给出一个 NameError:未定义名称“\u get\u grouper” class GroupBy(_GroupBy): def _add_numeric_operations(cls): cls.first = GroupBy(_GroupBy).nth(-1, dropna=False) _get_grouper在_GroupBy的init中被调用 c

我是一个巨蟒noobie,仍在学习诀窍

初始化GroupBy(_GroupBy)会导致我的代码给出一个 NameError:未定义名称“\u get\u grouper”

class GroupBy(_GroupBy):
    def _add_numeric_operations(cls):        
        cls.first = GroupBy(_GroupBy).nth(-1, dropna=False)
_get_grouper在_GroupBy的init中被调用

class _GroupBy(PandasObject, SelectionMixin):
    def __init__(self, obj, keys=None, axis=0, level=None,
        grouper=None, exclusions=None, selection=None, as_index=True,
        sort=True, group_keys=True, squeeze=False, **kwargs):
        if grouper is None:

            grouper, exclusions, obj = _get_grouper(obj, keys,
                                                    axis=axis,
                                                    level=level,
                                                    sort=sort,
                                                  mutated=self.mutated)


如果我在python命令行中调用第n个方法,它将起作用,但是在源代码中初始化它的类会引发此错误。我遗漏了什么?

您调用了
\u get\u grouper()
本身和类
\u GroupBy
\u init\u

首先,最好删除该递归调用。 通常,您可以使用另一个实现来替换递归调用

在类
\u GroupBy
\u init\uuuuuuuuuuu
中,将
\u get\u grouper()
替换为
grouper.\u get\u grouper()
,以澄清哪个类具有
\u get\u grouper()


这使得问题得以解决。

为什么
Grouper.\u get\u Grouper
应该在
\u GroupBy
中可见?
class Grouper(object):
    def _get_grouper(self, obj, validate=True):
        self._set_grouper(obj)
        self.grouper, exclusions, self.obj = _get_grouper(self.obj, [self.key],
                                                      axis=self.axis,
                                                      level=self.level,
                                                      sort=self.sort,
                                                      validate=validate)
        return self.binner, self.grouper, self.obj