我正在与python-docx
来自分叉的库version https://pypi.org/project/bayoo-docx/,并且我在编辑元素列表时遇到问题,因为它被定义为属性。
# docx.document.Document
@property
def elements(self):
return self._body.elements
我尝试采用提到的解决方案here https://stackoverflow.com/a/34179815/4171008但错误AtributeError: can't set attribute
仍然弹出。
我尝试的下一步是添加setter
到派生自的属性self._body
并编辑代码:
# docx.blkcntnr.BlockItemContainer
@property
def elements(self):
"""
A list containing the elements in this container (paragraph and tables), in document order.
"""
return [element(item,self.part) for item in self._element.getchildren()]
我尝试添加setter
在两个级别中,但最终再次出现错误AtributeError: can't set attribute
The setter
我写:
@elements.setter
def elements(self, value):
return value
我厌倦的实现:
elements_list = docx__document.elements
elem_list = []
docx__document.elements = elements_list = elem_list
该代码的主要问题是docx__document.elements
仍然包含所有应该被删除的元素!
编辑库是这样的:
# Inside docx.document.Document
@property
def elements(self):
return self._body.elements
@elements.setter
def elements(self, value=None):
self._body.elements = value
gc.collect()
return value
另一部分:
# Inside docx.blkcntnr.BlockItemContainer
@property
def elements(self):
"""
A list containing the elements in this container (paragraph and tables), in document order.
"""
return [element(item,self.part) for item in self._element.getchildren()]
@elements.setter
def elements(self, value):
"""
A list containing the elements in this container (paragraph and tables), in document order.
"""
return value
相关问题[更新]
如果我添加了一个setter
为了这property
:
# docx.document.Document
@property
def elements(self):
return self._body.elements
我还应该添加一个setter
为了property
:
# docx.blkcntnr.BlockItemContainer
@property
def elements(self):
"""
A list containing the elements in this container (paragraph and tables), in document order.
"""
return [element(item,self.part) for item in self._element.getchildren()]
因为价值document.elemetns
实际上是来自document._body.elements
, 我对吗?
任何帮助将不胜感激!