如何解决使用变量名引用动态生成的类属性的更多方法吗?
我正在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 举报,一经查实,本站将立刻删除。