Tôi cần phải viết các tệp XML bằng cách sử dụng lxml và Python.Bối rối khi sử dụng một lớp hoặc một hàm: Viết các tệp XML bằng cách sử dụng lxml và Python
Tuy nhiên, tôi không thể tìm hiểu xem có nên sử dụng một số class
để thực hiện việc này hoặc chức năng hay không. Vấn đề là, đây là lần đầu tiên tôi phát triển một phần mềm thích hợp và quyết định địa điểm và lý do tại sao sử dụng một số class
vẫn có vẻ bí ẩn.
Tôi sẽ minh họa quan điểm của mình.
Ví dụ: hãy xem xét mã dựa trên hàm sau mà tôi đã viết để thêm phần tử con vào gốc cây 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')
Đúng như dự đoán, sản lượng của việc này là:
<document>
<firstChild/>
<SecondChild/>
</document>
Tuy nhiên như bạn có thể nhận thấy những nhận xét, tôi không có ý tưởng làm thế nào để làm đặt biến văn bản sử dụng phương pháp này.
Có sử dụng cách class
cách duy nhất để giải quyết vấn đề này không? Và nếu có, bạn có thể cho tôi một số gợi ý về cách đạt được điều này không?
Oh wow, tôi tự hỏi làm thế nào tôi bỏ qua một điều như vậy. Cảm ơn bạn. Bạn có nghĩ rằng cách tiếp cận này là tốt hay tôi cần phải làm điều này bằng cách sử dụng một lớp học? – user225312
@PulpFiction, nếu bạn muốn giữ trạng thái mỗi trường hợp (ví dụ vì bạn có thể xử lý nhiều hơn một cây xml trong khi chạy) hoặc trong một vài trường hợp cận biên khác ngay cả khi không có trạng thái mỗi trường hợp (nếu bạn muốn sử dụng toán tử quá tải, thừa kế, và tương tự) thì các lớp là phải. Nếu không, kiểu Python bình thường thích các hàm - một lớp không có trạng thái cho mỗi trường hợp (hoặc ít nhất nằm trong một trong các trường hợp đặc biệt khác ở trên được liệt kê) chỉ là bản mẫu và chi phí, vậy tại sao lại bận tâm? –
Tôi nhận được ngay bây giờ. Cảm ơn! Tôi sẽ xử lý một cây cho mỗi lần chạy nhưng chỉ thêm các phần tử con vào nó. Tôi chỉ chạy mã ngay bây giờ và nó hoạt động. Chúc mừng! – user225312