我是面向对象编程和本网站的新手。
我已经为大学项目工作了很长一段时间(或者至少我试过)。我必须创建一个处理双向链表的程序,更确切地说,我需要实现以下内容:
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__
方法无法正常工作(或两者都不能)。 (这可能是非常明显的事情)
答案 0 :(得分:2)
将{}
添加到字符串中以告知格式放置值的位置。
def __str__(self):
return 'This is the value: {}'.format(self.first)
请参阅string format examples的Python文档。
并且,根据@ Jeremy的评论,您还需要将值分配给新节点,并将 str ()函数添加到Node类。
这应该有效:
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)