2

我正在尝试实现一个使用递归所必需的方法,但每次,我都会收到global name not defined错误我的类看起来像这样:

class MyClass(object):
    def _init_(self, name=None, content=None):
        self.name = name
        self.content = content

它是一个节点类,命名它只是一个文本字符串,内容是它的子节点列表(它们也是节点),初始化为None但是如果它们没有子节点,则构建树的构造函数会给它们一个空白列表。该类工作正常,该功能也可以,但是如果我尝试向方法添加递归,它们就不起作用,即使它们作为独立函数工作得很好,即:

def get_nodes(self):
    c = [] 
    c.append(self.name)
    if self.content != []:
        for a in self.content:
            c.extend(get_nodes(a))
    return c

我知道这是可能的,我做错了什么?

4

1 回答 1

4

你需要做a.get_nodes()

还调用了初始化方法__init__,而不是_init_(两端的两个下划线)。

编辑:如果您不显示您的代码,我们无法告诉您您的代码有什么问题。这段代码对我有用:

class MyClass(object):
    def __init__(self, name=None, content=None):
        self.name = name
        self.content = content
    def get_nodes(self):
        c = [] 
        c.append(self.name)
        if self.content != []:
            for a in self.content:
                c.extend(a.get_nodes())
        return c

>>> n = MyClass('me', [])
>>> m = MyClass('other', [n])
>>> m.get_nodes()
['other', 'me']

如果您的代码不起作用,那么您必须解释您的代码与该代码有何不同。

于 2012-12-02T20:52:49.010 回答