使用变量名引用动态生成的类属性的更多方法吗?

问题描述

我正在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 (将#修改为@)