2015-07-23 1 views
1

надеюсь, что кто-то может дать мне подсказку здесь, поэтому у меня есть класс Node, который должен получить 1 обязательное значение и один дополнительный. Идея заключается в том, чтобы вернуть Связанный списоккак создать экземпляр класса и распечатать значение

class Node(object): 
    def __init__(self, value, next_node = None): 
     self.value = value 
     self.next_node = next_node 

    def get_next(self): 
     return self.next_node 

Сейчас я использую этот класс, чтобы создать связанный список, как:

Z = Node('Z') 
Y = Node('Y', Z) 
X = Node('X', Y) 
W = Node('W', X) 

Теперь я хочу, чтобы написать функцию, которая принимает главу списка и печатает его:

def print_reverse(head): 
    current = head 
    my_list = [] 
    while current: 
     current = current.next_node 
     u = Node(current) 
     my_list.append(u.value) 
    print my_list 

print_reverse(W) 

Проблема, с которой я столкнулся, заключается в том, что я возвращаю адрес памяти вместо фактического значения.

[<__main__.Node object at 0x1033eb390>, <__main__.Node object at 0x1033eb350>, <__main__.Node object at 0x1033eb310>, None] 

В принципе, я не знаю, как создать экземпляр значения узла. Я хотел бы получить назад этот

[ W, X, Y , Z, None] 
+0

Почему вы выполняете 'u = Node (current)'? Просто 'my_list.append (current.value)'? Выполнение 'u = Node (current)' делает 'u.value = current', поэтому у вас возникает эта проблема. –

+0

@ M.Shaw AttributeError: объект «NoneType» не имеет атрибута «значение» –

ответ

1
class Node(object): 
    def __init__(self, value, next_node = None): 
     self.value = value 
     self.next_node = next_node 

    def get_next(self): 
     return self.next_node 

def print_reverse(head): 
    current = head 
    my_list = [] 
    my_list.append(current.value) 
    while current.next_node != None: 
     current = current.next_node 
     my_list.append(current.value) 
    print my_list 

Z = Node('Z') 
Y = Node('Y', Z) 
X = Node('X', Y) 
W = Node('W', X) 
print_reverse(W) 

Это работает и печатает [ 'W', 'X', 'Y', 'Z'] для меня.

+0

AttributeError: объект «NoneType» не имеет атрибута «значение» –

+0

@RaduAndrei Я обновил свой код - он работает для меня. –

0

Вам необходимо осуществить Repr, который должен возвращать для печати представление объекта. например.

class Node(object): 
    def __init__(self, value, next_node = None): 
     self.value = value 
     self.next_node = next_node 

    def get_next(self): 
     return self.next_node 

    def __repr__(self): 
     return self.value 

https://docs.python.org/2/reference/datamodel.html#object.repr

+1

Практически, но для отображения членов группы требуется \ __ repr__ not \ __ str__. Уродливая бородавка, ушедшая на питон 3. –

+0

@JLPeyret Совершенно верно. Обновлено. –

 Смежные вопросы

  • Нет связанных вопросов^_^