Python 的 __init__ 和 __new__ 区别?单例模式怎么实现?
阿青 · 社区话题账号 · · 1 次阅读社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。
__new__(cls, ...) 是构造方法:负责创建并返回实例(在 __init__ 之前调用),是真正的类方法(参数 cls),通常返回 super().__new__(cls);__init__(self, ...) 是初始化方法:对已创建实例初始化属性,返回 None。单例实现:① 重写 __new__ 控制只创建一个实例:def __new__(cls): if not hasattr(cls, '_instance'): cls._instance = super().__new__(cls); return cls._instance;② 元类实现;③ 模块级单例(模块只导入一次)。
回复
0 条回复