使用PyLaTeX时self与with语句结合引发AttributeError问题
问题原因与解决方案
原因分析
你碰到的AttributeError: args,本质是PyLaTeX里用doc.create()创建的元素,它的上下文管理器只能用一次。
第一次在set_up_overview里用with self.overview_table as table的时候,已经走完了上下文管理器的完整流程(__enter__和__exit__),这时候管理器内部的args、kwds这些属性已经被删掉了。第二次在add_data_to_report里再想用with复用这个管理器,自然就找不到已被删除的args属性,直接报错。
解决方案
不用再给已经创建好的overview_table套with语句了,直接调用它的方法就行。毕竟self.overview_table已经是添加到文档里的有效LongTable实例,后续直接操作这个对象就能修改表格内容。
修改后的add_data_to_report函数:
def add_data_to_report(self): self.overview_table.add_hline() # 后续可以直接继续添加行或其他操作,比如: # self.overview_table.add_row("1", "sample.pdf", "Success")
要是需要连续执行多个表格操作,直接依次调用方法就行,完全不需要上下文管理器包裹。
内容的提问来源于stack exchange,提问作者epodegrid
相关产品推荐
相关产品推荐

