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
相关产品推荐
相关产品推荐

