问题描述
我正在for
循环中动态生成文件句柄。如果我注释掉调试语句,第一个代码块将起作用。我已经弄清楚了如何(最终)引用动态生成的新属性,但是我想知道是否getattr
是唯一的实现方法。
def config_filehandles(self,filename:str):
self.filehandles = {'downloaded_file': self.downloaddir,'process_file': self.processingdir,'final_file': self.finaldir }
for handle,target_dir in self.filehandles.items():
file = FileContainer(filename,'html',target_dir)
setattr(self,handle,file)
logger.debug(f"filename path: {self.handle.path}")
带有调试语句的错误消息:
AttributeError: 'StoryPage' object has no attribute 'handle'
我意识到,当我调用print(f'{self.handle}')
时,它试图打印一个不存在的文字名称self.handle
的属性,而不是引用新的属性名称,例如self.downloaded_file
。这是我最终决定使用的解决方案,但这是唯一的解决方案吗?
setattr(self,file)
new = getattr(self,handle)
logger.debug(f"new filecontainer: {new.__dict__.values()}")
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)