拆分Kivy应用类至多文件时遇AttributeError:JsonStoreManager无get_instance属性
问题描述
将Kivy应用的类拆分到多个文件中后,调用JsonStoreManager.get_instance()时出现错误,提示该方法不是JsonStoreManager类的属性。
模块代码(假设文件名为json_store_manager.py):
from kivy.storage.jsonstore import JsonStore class JsonStoreManager: _instance = None @classmethod def get_instance(cls): if cls._instance is None: cls._instance = JsonStore("user_info.json") return cls._instance
主文件调用代码:
self.stored_data = JsonStoreManager.get_instance()
可能的原因及解决方法
导入方式错误
如果模块文件名为json_store_manager.py,主文件的导入语句可能不符合规范。比如直接写import JsonStoreManager会把整个模块当作对象,而非导入其中的类。正确导入方式二选一:# 方式1:直接导入类 from json_store_manager import JsonStoreManager# 方式2:导入模块后通过模块访问类 import json_store_manager self.stored_data = json_store_manager.JsonStoreManager.get_instance()拼写或大小写不一致
检查模块文件名、类名的拼写和大小写是否完全匹配。比如模块文件名是json_store_manager.py但导入时写成JsonStoreManager,或者类名误写为JsonStoreManeger,都会导致无法正确识别类或方法。循环导入问题
若主文件和模块之间存在循环导入(比如主文件导入模块,模块又导入主文件内的内容),会导致类无法正常加载。检查两个文件的导入语句,消除循环依赖。模块不在Python搜索路径中
若模块文件不在当前工作目录或Python的默认搜索路径里,Python会找不到该模块。可以将模块所在目录添加到搜索路径,或确保模块与主文件在同一目录下。示例:import sys sys.path.append("/你的模块所在目录绝对路径")
内容的提问来源于stack exchange,提问作者Jamie Poarch
相关产品推荐
相关产品推荐

