Python类和变量

neu*_*roh 0 python

学习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的新功能.感谢帮助.

Pet*_*per 7

我会这样实现:

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)