Python @ObjectiveDelete上的属性设置程序不工作

Python @ObjectiveDelete上的属性设置程序不工作,python,lxml,Python,Lxml,我在Python应用程序中使用lxml.objectify,并为选定的XML元素定义了自定义元素类。当我向自定义元素类添加属性时,会调用getter,但不会调用setter。不再调用setter,而是将一个名为我定义的属性的新子元素添加到元素中 我假设我的getter定义正确地覆盖了ObjectifiedElement的uu getattr uu方法,但由于某种原因,ObjectifiedElement的u setattr u方法优先于我的setter 如何让它执行我的setter呢 class

我在Python应用程序中使用lxml.objectify,并为选定的XML元素定义了自定义元素类。当我向自定义元素类添加属性时,会调用getter,但不会调用setter。不再调用setter,而是将一个名为我定义的属性的新子元素添加到元素中

我假设我的getter定义正确地覆盖了ObjectifiedElement的uu getattr uu方法,但由于某种原因,ObjectifiedElement的u setattr u方法优先于我的setter

如何让它执行我的setter呢

class CT_TextParagraph(objectify.ObjectifiedElement):
    """<a:p> custom element class"""
    def _get_algn(self):
        """
        Value of algn attribute on <a:pPr> child element
        """
        if not hasattr(self, 'pPr'):
            return None
        return self.pPr.get('algn')

    def _set_algn(self, value):
        """
        Set value of algn attribute on <a:pPr> child element
        """
        raise AssertionError('in _set_algn()')
        # if not hasattr(self, 'pPr'):
        #     pPr = _Element('a:pPr')
        #     self.insert(0, pPr)
        self.pPr.set('algn', value)

    #: Paragraph horizontal alignment value, like ``TAT.CENTER``
    algn = property(_get_algn, _set_algn)

objectify.ObjectifiedElement是否派生自object?如果不是,你有一个老式的类。通过使用类CT_TextParagraphobjectify.ObjectifiedElement,object:您可以使它成为一个新样式的类,它应该在其中工作。您必须确保对象位于CT_textParagraphy中。mro@glglgl,@User:ObjectifiedElement继承自ElementBase,ElementBase继承自_元素。它们看起来像这个cdef类lxml.etree.\u元素[object lxmlement]:,和这个cdef类lxml.etree.ElementBase.\u元素[object lxmlementbase]:。我不熟悉用C实现的类的Python语法,但我猜它们就是这样的。通过检查,我看不到混合料中有物体。如果我只是在ObjectiveDelete之后添加object作为CT_textParague的基类,你觉得会有用吗?@scanny试试吧。。。别以为你能打破任何东西…没用。事实证明,object已经在ObjectifiedElement的_umro_uuu中了。我认为问题的关键在于,在基类中的任何位置定义setattr都会覆盖在继承类中调用的属性设置器。我最终覆盖了CT_textpragement中的setattr,并手动将属性setter消息路由到setter方法。谢谢你的帮助,帮助我走上正轨: