gpt4 book ai didi

python - NameError:调用类函数时未定义全局名称 'getAllElements'

转载 作者:行者123 更新时间:2023-12-01 06:03:20 26 4
gpt4 key购买 nike

我可能忽略了一些东西,但我得到了一个带有函数“getAllElements”的类“parse”。在主脚本中,我使用

导入解析
from parseXML import parse. 

那我就做

parse = parse(file) 

效果很好。但当我这么做的时候

print parseXML.parse(file).getAllElements()

我收到以下错误:

NameError: global name 'getAllElements' is not defined 

下面是代码。我哪里出错了?

编辑:更改注释后的代码

class parse:
# Constructor
def __init__(self, file):
# parse the xml file into a tree
tree = xml.parse('/homes/ndeklein/test.featureXML')
# Get the root node of the xml file
self.rootElement = tree.getroot()
# Set self.parent to rootElement, because the first element won't have a parent (because it is the root)
self.parent = 'rootElement'
# dictionary that contains the parent -> child relation
self.parentChildDict = {}

# Go recursively through all the elements in the xml file, starting at the choosen rootElement, until only leaves (elements that don't contain elements) are left
# Return all the elements from the xml file
def getAllElements(self):
# if this is the first time this parent is seen:
# make elementDict with parent as key and child as value in a list
if not self.parentChildDict.has_key(self.parent):
self.parentChildDict[self.parent] = [self.rootElement]
# else: add the child to the parent dictionary
else:
self.parentChildDict[self.parent].append(self.rootElement)
for node in self.rootElement:
# if the len of rootElement > 0 (there are more elements in the element):
# set self.parent to be node and recursively call getAllElements
if len(self.rootElement) > 0:
self.parent = node
getAllElements()
return self.parentChildDict

.

#!/usr/bin/env python

# author: ndeklein
# date: 08/02/2012
# function: calls out the script

import parseXML
import xml.etree.cElementTree as xml
import sys

#Parse XML directly from the file path
file = '/homes/ndeklein/EP-B1.featureXML'
# parse the xml file into a tree
print parseXML.parse(file).getAllElements()

最佳答案

正如 Praveen 提到的,这是你的重要性和通话风格。

因为您以这种方式导入:

from foo import bar

您不需要(实际上不应该)在调用中显式声明 foo。

bar.baz()

不是

foo.bar.baz()

所以在你的情况下尝试调用:

parse(file).getAllElements()

但是您仍然需要解决递归中的裸调用:getAllElements() 可能应该是 self.getAllElements()

关于python - NameError:调用类函数时未定义全局名称 'getAllElements',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9213056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com