안녕하세요 실습4에 대해서 질문있습니다.
실습 4의 ProductionList.py 코드에서
특정 node가 head 혹은 tail인지 확인하는 구문으로써
"while node.getNextNode().strSerialNumber!='tail':"
과 같이 이용하도록 강의에서 교수님이 설명해 주셨는데요,
저는 아래와 같이 짰습니다.
"while node.getNextNode() != self.nodeTail:"
이렇게 실행하면 오류가나더군요
~/HW/practice/week4/ProductionList.py in getSize(self) 76 node = self.nodeHead 77 cnt = 0 ---> 78 while node.getNextNode() != self.nodeTail: #node.getNextNode().strSerialNumber!='tail': 79 node = node.getNextNode() 80 cnt+=1 ~/HW/practice/week4/PlanNode.py in getNextNode(self) 9 10 def getNextNode(self): ---> 11 node = self.nextNode 12 return node 13 AttributeError: 'PlanNode' object has no attribute 'nextNode'
-----
아마도 while구문에서 특정 node가 tail인지 인식하지 못하여 tail 에는 nextNode method 가 없기에
오류가 난 것 같습니다.
왜 저처럼 "while node.getNextNode() != self.nodeTail:" 이렇게 짜면 tail인지 인식하지 못하나요?
좌변, 우변 모두 self.nodeTail을 reference 하는것은 맞다고 생각하는데요..
또, 실습3의 ProductionList.py에도
while node.getNextNode()!=self.nodeTail:
# print(1)
node = node.getNextNode()
allStartDate.append(node.dateStart)
allModel.append(node.strModel)
self.BREAK+=1
if self.BREAK>10000:
print('error occured')
break
else:
print(self.BREAK)
doubly linked list에서 size를 구하기 위해 루프를 돌릴 때 비슷한 구문을 사용하지만 여기에선
정상적으로 작동합니다.
아마도 제 코드를 이용하려면 __eq__ method로 정의해주면 되는것 같긴한데 저런 오류가 발생하는
이유가 궁금합니다.
긴 글 읽어주셔서 감사합니다.
comment