Python アプリで lxml.objectify を使用しており、選択した XML 要素のカスタム要素クラスを定義しています。カスタム要素クラスにプロパティを追加すると、ゲッターは呼び出されますが、セッターは呼び出されません。セッターを呼び出す代わりに、定義したプロパティの名前を持つ新しい子要素が要素に追加されます。
私のゲッター定義が ObjectifiedElement の__getattr__
メソッドを適切にオーバーライドしていると仮定していますが、何らかの理由__setattr__
で ObjectifiedElement のメソッドが私のセッターよりも優先されています。
代わりに私のセッターを実行するには何が必要でしょうか?
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)