当前位置: 首页 > 知识库问答 >
问题:

NameError:未定义名称“AnyName”

吕鹏
2023-03-14

我试图做一个基于链接列表和节点的N-Ary树。但是每当我试图给树添加一个新值时,我总是得到:

NameError:未定义名称“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.LinkedList import *

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

链接列表代码

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

也谢谢你的帮助,我对Python有点陌生,我不知道我做错了什么。

共有1个答案

方焱
2023-03-14

问题是“自我”只在方法中定义,不能在参数中使用,在这些情况下,诀窍是使用无作为参数并进行验证:

def addTree(self, value, parent = None):
    if parent is None:
        parent = self.root
    parent.addLinkedList(value)
 类似资料:
  • 问题内容: 我在自学Python,只是在“探索”。Google说datetime是一个全局变量,但是当我尝试在终端中查找今天的日期时,我在问题标题中收到NameError吗? 问题答案: 您需要先导入模块: 之后,它可以工作:

  • 问题内容: 我有以下代码,并在尝试运行它时收到以下错误消息: 我试图让Raspberry Pi在端口17上收到输入时运行HTML脚本: 问题答案: Python的布尔常量是大写的:与以大写字母和分别。 小写变体只是变量的有效免费名称,因此您可以将它们用于任何所需的变量,例如(不建议使用; P)。

  • 我很难弄清楚为什么会出现错误:nameerror:name“convert tobinarydata”没有定义,有什么想法吗? 我认为函数convertToBinaryData的声明是正确的,尽管我不确定如何修复这个问题 回溯(最近一次调用):文件“C:\users\user............\testdb.py”,第20行,db.insertRawEcg(1,2,“C:\users\use

  • 问题内容: 我使用cxfreeze从planrequest.py创建Windows可执行文件。看来工作正常,但是当我运行exe文件时,我得到了 在)要使用此修复程序的python状态中未定义名称出口。但是,我使用import sys。该代码可以作为python脚本正常运行(例如,在编译为可执行文件之前,我对命令行参数进行了广泛测试。) 问题答案: 导入sys不足以在全球范围内实现。 你要么要做 要

  • 问题内容: 为什么这样的结构 给一个错误? 问题答案: 默认参数值在函数定义时评估,但仅在函数调用时可用。因此,参数列表中的参数不能相互引用。 将参数默认为默认值并在代码中为此添加测试是一种常见的模式:

  • 问题内容: 我在Mac OS X上使用Python 2.6.1。 我有两个简单的Python文件(如下),但是当我运行时 我在终端上: 我尝试以不同的方式重命名文件和类,这就是为什么两端有x和z的原因。;) 文件sqlitedbx.py 文件update_url.py 问题答案: 您需要做: