我在類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