Python - 内部 class 未定义?
Python - inner class is not defined?
我必须为我的 classes 之一做一个展开的链表。我是 python 的新手,但不是编程新手,出于某种原因我无法解决这个小问题!
我有一个 class 节点,它将成为展开链表中使用的节点对象。展开的链表 class 执行节点 class.
上的所有操作
class UnrolledLinkedList(object):
""" INNER NODE CLASS """
class Node(object):
def __init__(self):
self.array = []
self.next_node = None
""" END NODE CLASS """
def __init__(self, max_node_capacity=16):
self.max_node_capacity = max_node_capacity
self.head = Node()
""" OTHER FUNCTIONS OF UNROLLEDLINKEDLIST CLASS """
问题出现在 UnrolledLinkedList class' init 函数的最后一行:"global name Node is not defined"。我仔细检查了我的缩进并在互联网上查找了类似这样的例子,但找不到任何东西。有人介意向我解释一下哪里出了问题吗?
方法不包括它们的class作为要搜索的范围。如果你想让它起作用,那么你需要使用 UnrolledLinkedList.Node
或 self.Node
来代替。
使用:
self.head = self.Node()
而且有效。
A class 没有创建自己的名字 space。使用self.Node()
,Python首先搜索实例的所有属性。由于它在那里找不到名称 Node
,因此它会在 class UnrolledLinkedList
中搜索 Node
.
或者,您可以直接使用 class 名称:
UnrolledLinkedList.Node()
您可以在不嵌套 class Node
的情况下实现相同的效果:
class Node(object):
def __init__(self):
self.array = []
self.next_node = None
class UnrolledLinkedList(object):
def __init__(self, max_node_capacity=16):
self.max_node_capacity = max_node_capacity
self.head = Node()
内部 class Node
是 class UnrolledLinkedList
的成员,只能通过 self
.
访问
def __init__(self, max_node_capacity=16):
self.max_node_capacity = max_node_capacity
self.head = self.Node()
用 self
限定 Node()
:
class UnrolledLinkedList(object):
class Node(object):
def __init__(self):
self.array = []
self.next_node = None
def __init__(self, max_node_capacity=16):
self.max_node_capacity = max_node_capacity
self.head = self.Node()
Python 需要限定对事物的引用。在这种情况下,您可以说 UnrolledLinkedList.Node()
或 self.Node()
.
我必须为我的 classes 之一做一个展开的链表。我是 python 的新手,但不是编程新手,出于某种原因我无法解决这个小问题!
我有一个 class 节点,它将成为展开链表中使用的节点对象。展开的链表 class 执行节点 class.
上的所有操作class UnrolledLinkedList(object):
""" INNER NODE CLASS """
class Node(object):
def __init__(self):
self.array = []
self.next_node = None
""" END NODE CLASS """
def __init__(self, max_node_capacity=16):
self.max_node_capacity = max_node_capacity
self.head = Node()
""" OTHER FUNCTIONS OF UNROLLEDLINKEDLIST CLASS """
问题出现在 UnrolledLinkedList class' init 函数的最后一行:"global name Node is not defined"。我仔细检查了我的缩进并在互联网上查找了类似这样的例子,但找不到任何东西。有人介意向我解释一下哪里出了问题吗?
方法不包括它们的class作为要搜索的范围。如果你想让它起作用,那么你需要使用 UnrolledLinkedList.Node
或 self.Node
来代替。
使用:
self.head = self.Node()
而且有效。
A class 没有创建自己的名字 space。使用self.Node()
,Python首先搜索实例的所有属性。由于它在那里找不到名称 Node
,因此它会在 class UnrolledLinkedList
中搜索 Node
.
或者,您可以直接使用 class 名称:
UnrolledLinkedList.Node()
您可以在不嵌套 class Node
的情况下实现相同的效果:
class Node(object):
def __init__(self):
self.array = []
self.next_node = None
class UnrolledLinkedList(object):
def __init__(self, max_node_capacity=16):
self.max_node_capacity = max_node_capacity
self.head = Node()
内部 class Node
是 class UnrolledLinkedList
的成员,只能通过 self
.
def __init__(self, max_node_capacity=16):
self.max_node_capacity = max_node_capacity
self.head = self.Node()
用 self
限定 Node()
:
class UnrolledLinkedList(object):
class Node(object):
def __init__(self):
self.array = []
self.next_node = None
def __init__(self, max_node_capacity=16):
self.max_node_capacity = max_node_capacity
self.head = self.Node()
Python 需要限定对事物的引用。在这种情况下,您可以说 UnrolledLinkedList.Node()
或 self.Node()
.