
Hi, copy/deepcopy copies all xml content, but information about added methods is lost. Here is small example: [------------ subclass.py-----------------] from __future__ import print_function from lxml import etree import copy class DefaultElementClass(etree.ElementBase): def getLocalTag(self): return etree.QName(self.tag).localname def printInformation(x): print(x, x.__class__, "getLocalTag" in dir(x)) a = DefaultElementClass() printInformation(a) # printInformation(copy.copy(a)) printInformation(copy.deepcopy(a)) [-----------------------------------------] Output: <Element DefaultElementClass at 0x7f13d15416d8> <class '__main__.DefaultElementClass'> True <Element DefaultElementClass at 0x7f13d1652d88> <type 'lxml.etree._Element'> False <Element DefaultElementClass at 0x7f13d1652d88> <type 'lxml.etree._Element'> False Expected output: <Element DefaultElementClass at 0x7f13d15416d8> <class '__main__.DefaultElementClass'> True <Element DefaultElementClass at 0x7f13d15416d8> <class '__main__.DefaultElementClass'> True <Element DefaultElementClass at 0x7f13d15416d8> <class '__main__.DefaultElementClass'> True How create copy of the element and keep all methods from subclass? python-lxml:amd64 4.2.3-1 -- Best regards, Andrey Skvortsov