Не можете сделать объект ElementTree в __del__ глобального экземпляра класса Python? - PullRequest
0 голосов
/ 23 октября 2019

У меня есть класс Xml, используемый для изменения объекта xml.etree.ElementTree.ElementTree:

from xml.etree import ElementTree

class Xml:
    def __init__(self, file_path: str):
        self.__root = ElementTree.Element()
        self.__file = file_path

    def __del__(self):
        tree = ElementTree.ElementTree(self.__root)
        tree.write(self.__file)

, этот код работает нормально (файл XML переписан). Но когда я пытаюсь использовать этот класс в глобальной переменной, он запаниковал:

from typing import Optional

XML: Optional[Xml] = None

def set_xml(file_path):
    global XML
    XML = Xml('example_file_path')

ошибка нравится:

'NoneType` object ‘XML’ has no attribute 'ElementTree'

Я не знаю, неправильно ли я использую питонglobal или python __del__ метод, пожалуйста, дайте мне несколько советов, спасибо заранее!

...