일부 데이터 구조와 알고리즘을 Python으로 닦아서 순서가 지정되지 않은 링크 된 목록을 구현하고 있습니다. 동일한 파일 내에서 먼저 Node 클래스 다음에 List 클래스를 작성했습니다. 내가 얻지 못하는 것은 search_item() 메서드의 "현재"변수가 노드 객체이거나 노드 클래스의 메소드와 속성에 최소한 액세스 할 수있는 것입니다. 내가 add_node() 메소드를 주석 처리하면 "현재"는 더 이상 Node의 메소드에 액세스 할 수 없다는 것을 알았다. 이제는 상속이나 컴포지션을 명시 적으로 사용하지 않고 있으므로 코드가 아래에 작성된 방식으로 get_next()를 호출하는 방법을 보는 데 어려움을 겪고 있습니다. 나는 현재로 선언해야 할 것 : current = Node (self.head)하지만 현재 = self.head는 작동하는 것 같습니까? 도움을 주시면 대단히 감사하겠습니다.일부 컴포지션 측면을 이해하지 못했습니다.
class Node:
def __init__(self, data):
self.data = data
self.next = None
def get_data(self):
return self.data
def set_data(self, d):
self.data = d
def get_next(self):
return self .next
def set_next(self, n):
self.next = n
class UnorderedList:
def __init__(self):
self.head = None
def add_node(self, item):
tmp = Node(item)
tmp.set_next(self.head)
self.head = tmp
def search_item(self, item):
current = self.head
# current = Node(self.head)
found = False
while current != None and not found:
if current.get_data() == item:
found = True
else:
current = current.get_next()
return found
사례가 상속되지 않습니다. 그렇다면 어떤 상속 측면을 이해하지 못하고 있습니까? 질문을 변경할 수 있습니까? – olivecoder
@olivecoder, 올바른, 내 원래 게시물에서 언급했듯이 명시 적으로 상속 또는 구성을 사용하지 않고 있지만 어떻게 든 UnorderedList (노드)를 선언 한 다음 현재 = Node (self.head)를 인스턴스화하는 대신 current = self.head Node의 메소드에 대한 현재 액세스를 제공하며 이유를 이해하고자합니다. 희망이 내 질문을 지 웁니다. – tjbadr
TBadr. 명시 적 또는 암시 적으로 상속을 사용하지 않고 있습니다 (?). 질문은 상속 관계가 없습니다. 코드를 따라갈 수 없습니다. 여기서 개념은 상속이 아니라 구성이라고 말할 수 있지만 전혀 문제가되지 않습니다. 그래서 나는 당신의 질문에 대한 편집을 제안하려고 노력했지만 제목을 상상할 수는 없었습니다. 확실히 현재가 아닙니다. – olivecoder