Я должен записать XML-файлы с помощью lxml и Python.
Однако я не могу выяснить, использовать ли a class
сделать это или функцию. Точка быть, это - первый раз, когда я разрабатываю надлежащее программное обеспечение и решаю, где и почему использовать a class
все еще кажется таинственным.
Я проиллюстрирую свой тезис.
Например, рассмотрите следующий основанный на функции код, который я написал для добавления подэлемента к корню etree.
from lxml import etree
root = etree.Element('document')
def createSubElement(text, tagText = ""):
etree.SubElement(root, text)
# How do I do this: element.text = tagText
createSubElement('firstChild')
createSubElement('SecondChild')
Как ожидалось вывод этого:
<document>
<firstChild/>
<SecondChild/>
</document>
Однако, поскольку можно заметить комментарий, я понятия не имею, как сделать набор текстовая переменная с помощью этого подхода.
Использует a class
единственный способ решить это? И если да, можно дать мне некоторые подсказки по тому, как достигнуть этого?
Работает следующий код:
def createSubElement(text, tagText = ""):
elem = etree.SubElement(root, text)
elem.text = tagText
createSubElement('firstChild', 'first one')
createSubElement('SecondChild', 'second one')
print etree.tostring(root)
Использование класса, а не функции в основном связано с сохранением состояния в экземплярах класса (в очень немногих случаях использования класс будет иметь смысл, если нет состояния -содержание требуется), что не имеет ничего общего с вашей проблемой - как показывает код, ваша проблема заключалась просто в том, что вы не привязывали какое-либо имя к элементу, возвращенному из вызова SubElement
, и, следовательно, конечно вы не смогли в дальнейшем манипулировать этим элементом (например, установив его атрибут text
) в остальной части вашей функции.