У меня есть функция генератора getElements в классе Reader (), которая выдает все элементы из XML-файла.Я также хочу иметь функцию getFeatures, которая возвращает только элементы с тегом функции.
Как я пытался это сделать, чтобы иметь флаг featuresOnly, установленный в True, когда вызывается getFeatures, а в 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не содержит доходности.Теперь способ, которым я знаю, как решить эту проблему, - это скопировать код getElements в getFeatures и использовать только
if elementFunctions.getElmentTag(element) == 'feature':
в функции getFeatures (), но я не буду дублировать какой-либо код.Так как же я смогу сохранить функцию генератора и использовать другую функцию, в которой я только определяю, какой тег я хотел бы получить?