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

为什么导入Python类时,类定义外的代码也会被执行?

问题原因

Python导入任意模块时,会从头到尾执行该模块所有顶层作用域的代码——也就是没有缩进、不属于任何类/函数定义的代码。你写在Exercise_7.py末尾的测试代码就是顶层代码,导入的时候自然会被执行。

每个Python文件都有一个内置的__name__属性:

  • 如果你直接运行该文件(比如直接跑python Exercise_7.py),它的__name__值会被自动设为"__main__"
  • 如果你是在其他文件里导入该文件作为模块,它的__name__值会被设为模块自身的名字(这里就是"Exercise_7")

解决方法

把Exercise_7.py里你不希望导入时执行的测试代码,全部放到if __name__ == "__main__":的判断块里就行,修改后的Exercise_7.py末尾代码如下:

# --- 不希望被导入时执行的测试代码 --- 
if __name__ == "__main__":
    vehicle1 = Vehicle("Car", (3,5), "red", False)
    vehicle1.updateVelocity((2,6))
    vehicle1.allAttributes()
    print(vehicle1.emissions(100))

修改后:

  • 直接运行Exercise_7.py时,判断条件成立,测试代码正常执行,不影响你单独调试Vehicle类
  • 从Exercise_8.py导入Vehicle类时,判断条件不成立,测试代码不会运行,只会执行类定义等你需要的内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:24:08