从嵌套类创建相同类型的python对象
我需要一些关于我遇到的一个奇怪问题的提示,我不是一个完全的python新手,但我以前从未见过这个 我有一个名为List的类,其中有一个嵌套类,\u Node。我可以: 在列表中初始化列表类型的对象 在列表中初始化_Node类型的对象 在_节点内初始化列表类型的对象 但是,我无法在_节点中初始化_节点。下面代码的最后一行导致NameError:未定义全局名称“\u Node” 我如何解决这个问题?使_Node类成为unested类是可行的,但是我计划在同一个文件中有多种类型的列表,所有伴随的节点都继承自一个抽象类,所以我尝试的这种结构有点重要 我知道给我的班级命名为“列表”是个坏主意,这只是这个问题的名称。试着用self.\uuu class\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu从嵌套类创建相同类型的python对象,python,oop,nested,Python,Oop,Nested,我需要一些关于我遇到的一个奇怪问题的提示,我不是一个完全的python新手,但我以前从未见过这个 我有一个名为List的类,其中有一个嵌套类,\u Node。我可以: 在列表中初始化列表类型的对象 在列表中初始化_Node类型的对象 在_节点内初始化列表类型的对象 但是,我无法在_节点中初始化_节点。下面代码的最后一行导致NameError:未定义全局名称“\u Node” 我如何解决这个问题?使_Node类成为unested类是可行的,但是我计划在同一个文件中有多种类型的列表,所有伴随的节点都
在哪里初始化_节点类?它可能只是超出了范围。老实说,我宁愿使用None作为下一个节点的默认值。这是一种廉价而简单的方法来检查是否有继任者。另外,最好不要使用getter/setter。@各位,我真的很欣赏代码质量注释,但这只是快速键入的代码来说明我的问题。我的实际代码与此完全不同:谢谢!很好,很简单,但是你或者有人知道为什么我的代码是错误的吗?据我所知,内部类的作用域应该仍然允许自己被实例化,就像外部类一样。
class List:
def __init__(self):
self.root = None
self.brother = None
def set_root(self):
self.root = self._Node()
def set_brother(self):
self.brother = List()
def set_root_next(self):
self.root.set_next()
class _Node:
def __init__(self, next_node=None, data=None):
self.next_node = next_node
self.data = data
def set_next(self):
self.next_node = _Node()
if __name__ == '__main__':
x = List()
x.set_root()
x.set_brother()
x.set_root_next()
class List:
def __init__(self):
self.root = None
self.brother = None
def set_root(self):
self.root = self._Node()
def set_brother(self):
self.brother = List()
def set_root_next(self):
self.root.set_next()
class _Node:
def __init__(self, next_node=None, data=None):
self.next_node = next_node
self.data = data
def set_next(self):
self.next_node = self.__class__()
if __name__ == '__main__':
x = List()
x.set_root()
x.set_brother()
x.set_root_next()