如何让两个Python文件中的同一Car类对象实例ID保持一致?
如何让两个Python文件共享同一个Car类实例
你的代码出现多个不同对象ID的核心问题是循环导入引发的重复执行:
- 运行
main.py时,首先执行import newFile1,触发newFile1.py的加载与执行 newFile1.py中from main import car会迫使main.py的代码再次执行,此时创建第一个Car实例(对应输出里的第一个ID),newFile1打印该ID- 等
newFile1执行完毕,回到main.py继续执行剩余代码,又创建了第二个Car实例(对应输出里的第三个ID),最终出现两个不同的ID输出
方法1:使用独立共享模块(推荐)
创建单独模块存放共享的类与实例,彻底规避循环导入问题。
shared.py
class Car: def __init__(self, speed): self.speed = speed # 在这里创建唯一的Car实例 car = Car(10)
main.py
import newFile1 from shared import car print("main.py:", id(car))
newFile1.py
from shared import car print("newFile1.py:", id(car))
运行main.py后,两个文件输出的ID会完全一致,因为它们引用的都是shared.py中创建的同一个实例。
方法2:调整导入时机
如果不想新增模块,可以将导入语句放到实例创建之后,避免循环执行时重复创建对象。
main.py
class Car: def __init__(self, speed): self.speed = speed # 先创建唯一实例,再导入newFile1 car = Car(10) import newFile1 print("main.py:", id(car))
newFile1.py
from main import car print("newFile1.py:", id(car))
这样运行main.py时,会先完成Car实例的创建,再导入newFile1,此时newFile1导入的是已经创建好的唯一实例,不会触发main.py重复执行创建新对象,输出的ID会保持一致。
内容的提问来源于stack exchange,提问作者Kucer0043
相关产品推荐
相关产品推荐

