Какое-то странное поведение при вставке элемента в python 3.7 ElementTree - PullRequest
0 голосов
/ 18 января 2020

Я получаю сообщение об ошибке в каком-то коде, который работал в python 2.7. Я нахожусь в отладчике, прямо перед тем, как какой-то код вставляет Элемент

(Pdb) ET.Element
<class 'xml.etree.ElementTree.Element'>
(Pdb) xxx = ET.Element(component.PROPERTY,name=CODE_LANGUAGE_PPTY,value=codeLanguage)
(Pdb) xxx
<Element 'property' at 0x102d00c10>
(Pdb) type(xxx)
<class 'xml.etree.ElementTree.Element'>
(Pdb) cmpxml
<Element 'component' at 0x102cfd6b0>
(Pdb) type(cmpxml)            
<class 'xml.etree.ElementTree.Element'>
(Pdb) cmpxml.insert(0, xxx)
*** TypeError: insert() argument 2 must be xml.etree.ElementTree.Element, not Element
(Pdb) type(xxx)
<class 'xml.etree.ElementTree.Element'>

(Pdb) print(sys.version)
3.7.4 (default, Sep  7 2019, 18:27:02) 
[Clang 10.0.1 (clang-1001.0.46.4)]

xxx явно xml.etree.ElementTree.Element. Может кто-нибудь объяснить, почему это не удается? Я читал кое-что о том, что проверки типов в ElementTree были добавлены в Python 3.4, но я не понимаю, почему он думает, что xxx - это Element (что бы это ни было), когда type(xxx) говорит, что это xml.etree.ElementTree.Element.

Мой импорт выглядит (довольно обычный):

import xml.etree.ElementTree as ET
...