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 />
「MadeCustomElement」を印刷したいのですが、印刷しません。コンストラクターを呼び出させることはできますか?
コンストラクターを呼び出さずにCustomElementクラスのインスタンスを作成するにはどうすればよいですか?
>>> isinstance(root,CustomElement)
True