lxml.objectify, похоже, не вызывает конструкторы для моих пользовательских классов элементов:
from lxml import objectify, etree
class CustomLookup(etree.CustomElementClassLookup):
def lookup(self, node_type, document, namespace, name):
lookupmap = { 'custom' : CustomElement }
try:
return lookupmap[name]
except KeyError:
return None
class CustomElement(etree.ElementBase):
def __init__(self):
print("Made CustomElement")
parser = objectify.makeparser()
parser.set_element_class_lookup(CustomLookup())
root = objectify.parse(fname,parser).getroot()
Предположим, файл для анализа
<custom />
Я бы хотел, чтобы это распечатать "Сделано CustomElement ", но это не так.Можно ли заставить его вызывать конструктор?
Как создать экземпляр класса CustomElement без вызова конструктора?
>>> isinstance(root,CustomElement)
True