You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python类初始化加载JSON配置文件问题求助

解决方案

首先,你遇到的核心问题是没有正确实例化ConfigHandler类,同时原代码存在路径和资源管理的小问题,下面是修正后的完整方案:

修正ConfigHandler类

import os
import json

class ConfigHandler:
    # 把绝对路径改成相对路径(更适合本地开发),若你的配置文件在特定目录,自行调整路径
    CONFIG_FILE = "config.json"

    def __init__(self):
        print("init config")
        self.config_data = {}  # 初始化空配置字典
        if os.path.exists(self.CONFIG_FILE):
            print("Loading config file")
            # 使用上下文管理器安全读取文件,避免资源泄漏
            with open(self.CONFIG_FILE, 'r', encoding='utf-8') as f:
                self.config_data = json.load(f)
        else:
            print("Config file not loaded")
    
    def get_config(self):
        # 提供专门方法获取配置字典
        return self.config_data

主应用类的正确写法

from ConfigHandler import ConfigHandler

class MainApp:
    # 必须加括号实例化类,才会触发__init__方法里的打印和配置加载
    config = ConfigHandler()

    def run(self):
        # 示例:获取并打印配置
        current_config = self.config.get_config()
        print("当前加载的配置:", current_config)

# 测试运行(确保脚本直接执行时才运行)
if __name__ == "__main__":
    app = MainApp()
    app.run()

关键说明

  1. 实例化类必须加括号:之前没触发打印,大概率是你写了config = ConfigHandler(没加括号),这只是引用了类对象,不会调用__init__方法,必须写成ConfigHandler()才会创建实例并执行初始化逻辑。
  2. 路径问题:原代码用的/config.json是根目录绝对路径,除非你确实把配置文件放在系统根目录,否则改成相对路径(如当前脚本同目录的config.json)更合理。
  3. 避免直接覆盖__dict__:原代码把json内容直接赋值给self.__dict__会覆盖实例的内置属性,风险较高,改用单独的config_data属性存储配置更安全,再通过get_config方法对外提供访问。
  4. 安全文件操作:用with open上下文管理器读取文件,能确保文件自动关闭,避免资源泄漏。

内容的提问来源于stack exchange,提问作者evolmonster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 03:11:00