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

如何让两个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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 09:25:05