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

Python创建多个类实例为何仅打印一次类内的Hello语句?

原理说明

你写在类定义块顶层的print("Hello")属于类定义阶段的执行代码,仅会在Python解释器首次解析class lol类定义的时候执行1次,和后续实例化多少次类对象没有关联。

完整执行顺序如下:

  • 解释器逐行读取代码时,遇到class lol定义块,会直接执行块内的所有顶层代码,此时运行print("Hello")输出Hello,完成类的定义工作。
  • 执行h = lol():调用类的默认构造方法创建实例,仅会执行构造方法__init__内的逻辑,不会重复触发类顶层代码的执行。
  • 执行k = lol():和上一步逻辑完全一致,创建第二个独立实例,依旧不会运行类顶层的print语句。
  • 执行print(id(h), id(k))输出两个不同的ID,是因为h和k是内存中完全独立的两个实例对象,内存地址自然不相同。

如果你需要每次实例化类的时候都输出Hello,将print语句放到类的构造方法__init__中即可,示例如下:

class lol:
    # __init__是类的构造方法,每次创建实例时都会自动调用
    def __init__(self):
        print("Hello")

h = lol() # 输出Hello
k = lol() # 再次输出Hello
print(id(h), id(k)) # 输出两个不同的id

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:57:03