5

编辑:这是一个愚蠢的错误,看看答案,但我的init方法没有定义self变量。

我有几个 python 类是管道中的阶段。它们继承自基类。

class StageBase(object):
    key = Segments.NONE
    _preprocessors = []

    def __init__():
        self.closing = False
        self.working = False
        self._que = None
        self._working_lock = None
        self._que_lock = None

    #whole bunch of other methods

继承类覆盖key_preprocessors。在添加显式__init__()方法之前,一切正常,现在我收到以下错误:

TypeError: __init__() takes no arguments (1 given)

错误所在的行是我覆盖的行_preprocessors(在此示例中,此类变量表示应在此阶段之前执行的其他阶段)。

抛出此错误的示例类:

class StaticPageStage(StageBase):
    key = Segments.STATICPAGE
    _preprocessors = [FacebookGraphStage(), ]

    def __init__():
        pass

    def process(self, data):
        data = self._preprocess(data)
        return self.handle_results(tuple(x for x in data))

谁能告诉我如何解决这个问题?

4

3 回答 3

8

您需要将默认self参数添加到__init__

def __init__(self):
于 2011-04-06T16:08:52.283 回答
2

init的签名中必须至少有一个参数:

def __init__(self):
    pass

这里的错误可能来自 FacebookGraphStage。检查其init方法(以及文件中的其他方法)以解决问题

于 2011-04-06T16:10:54.397 回答
1

总是在类内部的函数定义中使用self参数,即使函数从不接受参数。self作为第一个参数传递给所有函数,因此错误表示您的函数__init__不接受它。

这是一些(希望如此)工作代码:

class StageBase(object):
    key = Segments.NONE
    _preprocessors = []

    def __init__(self):
        self.closing = False
        self.working = False
        self._que = None
        self._working_lock = None
        self._que_lock = None

    #whole bunch of other methods


class StaticPageStage(StageBase):
    key = Segments.STATICPAGE
    _preprocessors = [FacebookGraphStage(), ]

    def __init__(self):
        pass

    def process(self, data):
        data = self._preprocess(data)
        return self.handle_results(tuple(x for x in data))
于 2011-04-06T16:09:55.893 回答