Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python NameError:name";AnyName";没有定义_Python_Python 3.x - Fatal编程技术网

Python NameError:name";AnyName";没有定义

Python NameError:name";AnyName";没有定义,python,python-3.x,Python,Python 3.x,我正在尝试做一个基于链表和节点的N元树。但每当我尝试向树添加新值时,我总是得到: name错误:未定义名称“self” 我使用模块,因此必须从其他文件导入类 我在树代码的def addTree(self,value,parent=self.root)中得到这个错误: 树代码 from Resources.LinkedList import * class Tree: def __init__(self): self.root = LinkedList() def addTree(se

我正在尝试做一个基于链表和节点的N元树。但每当我尝试向树添加新值时,我总是得到:

name错误:未定义名称“self”

我使用模块,因此必须从其他文件导入类

我在树代码的def addTree(self,value,parent=self.root)中得到这个错误:

树代码

from Resources.LinkedList import *

class Tree:
def __init__(self):
    self.root = LinkedList()

def addTree(self, value, parent = self.root):
    parent.addLinkedList(value)
from Resources.Node import *
from Resources.Compare import *

class LinkedList:
    def __init__(self):
        self.first = None

    def addLinkedList(self,value):
        if (not self.first):
            self.first = Node(value)
        else:
            compare = Compare()
            if(compare.compare(self.first,value)>0):
                stack = self.first
                self.first = Node(value)
                self.first.next = stack
                return True
            else:
                previous = self.first
                current = self.first.next

                while(current):
                    if (compare.compare(current,value)<0):
                        previous = current
                        current = current.next
                         return True
                    elif (compare.compare(current,value)>0):
                        stack = current
                        previous.next = Node(value)
                        previous.next.next = stack
                        return True
                    else:
                        previous.next = Node(value)
                        previous.next.next = current.next
                        return True

                previous.next = Node(value)
                return True
节点代码

from Resources.LinkedList import *

class Node:
    def __init__(self,name):
        self.name = name
        self.children = LinkedList()
        self.next = None
链表代码

from Resources.LinkedList import *

class Tree:
def __init__(self):
    self.root = LinkedList()

def addTree(self, value, parent = self.root):
    parent.addLinkedList(value)
from Resources.Node import *
from Resources.Compare import *

class LinkedList:
    def __init__(self):
        self.first = None

    def addLinkedList(self,value):
        if (not self.first):
            self.first = Node(value)
        else:
            compare = Compare()
            if(compare.compare(self.first,value)>0):
                stack = self.first
                self.first = Node(value)
                self.first.next = stack
                return True
            else:
                previous = self.first
                current = self.first.next

                while(current):
                    if (compare.compare(current,value)<0):
                        previous = current
                        current = current.next
                         return True
                    elif (compare.compare(current,value)>0):
                        stack = current
                        previous.next = Node(value)
                        previous.next.next = stack
                        return True
                    else:
                        previous.next = Node(value)
                        previous.next.next = current.next
                        return True

                previous.next = Node(value)
                return True
来自资源。节点导入*
从资源。比较导入*
类链接列表:
定义初始化(自):
self.first=无
def addLinkedList(自身,值):
如果(非自我优先):
self.first=节点(值)
其他:
比较=比较()
如果(compare.compare(self.first,value)>0):
堆栈=自我优先
self.first=节点(值)
self.first.next=堆栈
返回真值
其他:
前一个=自我优先
当前=self.first.next
while(当前):
如果(比较。比较(当前,值)0):
堆栈=当前
previous.next=节点(值)
previous.next.next=堆栈
返回真值
其他:
previous.next=节点(值)
previous.next.next=当前.next
返回真值
previous.next=节点(值)
返回真值
同样感谢您的帮助,我对Python有点陌生,我不知道我做错了什么。

问题是“self”只在方法中定义,不能在参数中使用,在这些情况下的技巧是使用None作为参数并进行验证:

def addTree(self,value,parent=None):
如果父项为“无”:
parent=self.root
parent.addLinkedList(值)