, 난 간단한 노드 트리 만들기 위해 내 코드 묶는거야되는 클래스 레벨에서 정의 된 배열 속성에 액세스 할 때 : 나는 self
을 통해 정의 된 클래스 수준의 속성에 액세스 한재귀 오류 그래서 여기
class Node(object):
child = []
def __init__(self,id):
self.id =id
def addChild(self,child):
self.child.append(child)
def printChildOnwards(self):
yield self.id
for x in self.child:
yield from x.printChildOnwards()
firstChild = Node('1')
secondChild = Node('2')
thirdChild = Node('3')
fourthChild = Node('4')
firstChild.addChild(secondChild)
firstChild.addChild(thirdChild)
for x in firstChild.printChildOnwards():
print(x)
을 자신의 버전에 액세스하고 있는지 확인하십시오.
출력 : 1 2 2 2 2 ... then recursion error max depth
단순히이 self.child = []
출력과 같은 __init__
내부를 정의 할 경우가 작동하지만 : 1 2 3
이 동작 뒤에있는 이유는 무엇입니까? __init__
에 왜 이것을 포함해야합니까? 최초의 예에서
사이드 노트 : 파이썬 3에있어 이후 ('수율 from' 그것을 범), 명시 적으로 object' '에서 상속 할 필요는 없습니다. 이것은 Python 2에서만 필요합니다 (새로운 스타일의 클래스 작동을 강제하는 것). 그러나 Python 3에서는 모든 클래스가 "새로운 스타일"이며 암시 적으로'object'를 상속합니다. – ShadowRanger
오, 그래, 정말 고마워! –