Python中database类的__init__构造函数被调用两次的原因是什么
database类构造函数两次打印日期的排查方案
- 优先确认
BulletinInterface实例化次数:你代码中database的实例化逻辑绑定在BulletinInterface的构造方法内,若BulletinInterface被创建了两次,database自然会被实例化两次 - 排查模块重复导入问题:如果
database所在模块的顶层存在直接实例化BulletinInterface的代码,同一模块被不同路径多次导入时,Python会执行两次模块顶层代码,触发两次实例化 - 排查框架热重载影响:你使用的是Kivy框架,若开启了调试模式的热重载功能,代码修改后自动重载时旧实例未销毁、新实例完成创建,也会出现两次打印的情况
- 可直接打印调用栈定位触发源,在
database的__init__中加入以下代码,就能直接看到两次构造分别是哪里调用的:
import traceback def __init__(self): print("当前database实例化的调用栈:") traceback.print_stack() self.today = date.today() print(self.today)
内容的提问来源于stack exchange,提问作者fathergriffin
相关产品推荐
相关产品推荐

