学习Python时,我在制作链表类时遇到了一些问题.这只是一个快速节点和脏节点类.在java中我会关闭私有Node next和private int val但我只知道global是python cousin.这看起来怎么样?
#class Node class
class Node(object):
global next
global val
def __init__(self):
next
val
def setNext(self, aNext):
self.next = aNext
def getNext(self):
return self.next
def setVal(self, aVal):
self.val = aVal
def getVal(self):
return self.val
Run Code Online (Sandbox Code Playgroud)
然后我尝试在另一个类中使用Node
from Node import *
head = Node()
Run Code Online (Sandbox Code Playgroud)
我怎么会得到一个未定义变量的错误.抱歉,这是一个简单的问题,只是python的新功能.感谢帮助.
我会这样实现:
class Node(object):
def __init__(self, next=None, val=None):
self.next = next
self.val = val
Run Code Online (Sandbox Code Playgroud)
而已.没有getter或setter - Python不使用它们.相反,如果您需要远离基本属性引用逻辑,则重构为属性.
然后,您可以创建包含或不包含值或后继的节点:
tailnode = Node()
tailnode.val = 'foo'
midnode = Node(val='bar')
midnode.next = tailnode
headnode = Node(val='baz', next=midnode)
Run Code Online (Sandbox Code Playgroud)