2012-12-02 5 views
2

내가 재귀를 사용할 필요가있는 방법을 구현하기 위해 노력하고있어 정의되지 않은,하지만 때마다, 나는이 같은 global name not defined 오류 내 클래스 모양 얻을 :사용자 정의 클래스는 전역 이름은

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

노드 클래스입니다. 이름은 텍스트 문자열이고 내용은 자식 노드 (노드도 해당)입니다. None으로 초기화되었지만 트리가 작성된 구성 함수는 자식이 없으면 빈 목록을 제공합니다. . 이 클래스는 잘 작동 등 기능을 수행하지만 방법에 recurtion를 추가하려고하면 그들은 단지 그들이, 즉 독립 함수로 잘 작동하더라도 작동하지 않습니다

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

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'] 

코드가 작동하지 않으면 코드와 다른 점을 설명해야합니다.

+0

대단히 감사합니다. 두 가지 방법 중 하나가 (인스턴스 메서드로 쓰고, 저는 믿습니다) 다른 하나는 이것을 수행 한 후 잘 작동했으며 예제의 funtion은 효과가 없었습니다. 같은 오류가 계속 발생합니다. init는 오타였습니다. 클래스에서 올바르게 처리했습니다. – Janbure

+0

@ Janbure : 나는 당신이 의미하는 것을 얻지 못합니다. 'get_nodes '가 메소드 (즉, 클래스 정의 내부에 있음)인지 말하지 않습니까? 어떻게 부르니? 문제를 보여주는 완전한 실행 가능한 예제를 게시 할 수 있습니까? – BrenBarn

+0

예, 제가 작전에 게시 한 것과 같은 수업 시간에 있습니다. 전체 코드를 게시 할 수 없기 때문에 임무를위한 것이므로 복사가 두려워요. 나는 당신을 만들고 싶지 않습니다. 사람들은 숙제를해야하지만, 내가 게시 한 것과 같습니다. 가장 큰 관심사는 node.get_nodes()와 같은 메소드로 작동하지 않는 이유이지만 순수한 함수로 작동합니까? – Janbure

관련 문제