2017-03-18 93 views
0

我是新来的面向对象编程和本网站。双链表实施不起作用

我一直对这个节目的一个大学项目相当长一段时间(至少我尝试)。我要创建一个程序,用双链表交易,更精确地说,我需要实现以下几件事:

  • class Node
  • class LinkedList
  • 各种方法。

这是我的代码看起来像至今:

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

class LinkedList(object): 
    def __init__(self): 
     self.first = None 
     self.last = None 

    def __str__(self): 
     return 'This is the value: '.format(self.first) 

    def append(self, value): 
     new_node = Node() 
     self.first = new_node 

def main(): 
    myList = LinkedList() 
    myList.append(20) 
    print(myList) 

我期望的输出是:"This is the value: 20"

但输出我得到的是:"This is the value: "

我的错误是什么?我的append方法或我的__str__方法无法正常工作(或两者都不)。 (这也可能是一些真正明显)

+1

你在你的append方法不使用值。 –

+1

建议您阅读[** _如何调试小程序_ **](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。 – martineau

回答

2

添加{}字符串告诉格式,其中把值。

def __str__(self): 
    return 'This is the value: {}'.format(self.first) 

请参阅Python文档string format examples

而且,根据@Jeremy的评论,您还需要将值分配给新节点,并向节点类添加一个str()函数。

这应该工作:

class Node: 
    def __init__(self, value=None): 
     self.value = value # <- store the value in the object 
     self.next_node = None 
     self.previous_node = None 

    def __str__(self):    # <- return the value as a string 
     return str(self.value) 

class LinkedList(object): 
    def __init__(self): 
     self.first = None 
     self.last = None 

    def __str__(self): 
     return 'This is the value: {}'.format(self.first) 

    def append(self, value): 
     new_node = Node(value) # <- pass value to the Node 
     self.first = new_node 
main() 
    myList = LinkedList() 
    myList.append(20) 
    print(myList) 
+0

谢谢,已经帮了很多。我添加了{},但现在我得到以下输出:'这是值:<__ main __。0x00521C90的节点对象> 如何获取该对象的实际内容? – Quinlin

+0

请参阅我的更新回答,如果解决了您的问题,请接受。 – Craig

+0

工作过,非常感谢Craig! – Quinlin