我在类Reader()中生成一个生成器函数getElements,该类生成xml文件中的所有元素。我也想要一个getFeatures函数,它只能生成带有特征标签的元素。如何在循环内使用nonetype函数调用生成器类型函数?
我多努力,它是有一个设置为True时getFeatures被称为标志featuresOnly,并在getFeatures调用self.getElements,像这样:
def getFeatures(self):
self.getFeaturesOnly = True
self.getElements()
这种方式的getElements()我只要做
def getElements(self):
inFile = open(self.path)
for element in cElementTree.iterparse(inFile):
if self.getFeaturesOnly == True:
if element.tag == 'feature':
yield element
else:
yield element
inFile.close()
然而,当我这样做,并运行它
features = parseFeatureXML.Reader(filePath)
for element in features.getFeatures():#
print element
我得到:TypeError:'NoneType'对象不可迭代 这是因为getFeatures不包含yield。现在,我知道如何解决这个问题的办法是的getElements的代码复制到getFeatures只有使用
if elementFunctions.getElmentTag(element) == 'feature':
在getFeatures
()函数,但我宁愿不重复的任何代码。那么,如何才能够保持发电机功能,并且具有不同的功能,我只能说明我希望得到哪个标签?
谢谢,工作! – 2012-02-17 10:48:56