千家信息网

如何进行init和new的对比及单例模式分析

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,今天就跟大家聊聊有关如何进行init和new的对比及单例模式分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。简单总结如下:1,__new__
千家信息网最后更新 2026年11月03日如何进行init和new的对比及单例模式分析

今天就跟大家聊聊有关如何进行init和new的对比及单例模式分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

简单总结如下:

1,__new__方法是对象的生成方法,__init__方法是对象的初始化方法。

2,对象生成后,才能初始化。故__new__方法在__init__方法之前调用。

3,__new__方法的第一个参数是cls,指的是类本身,__init__的第一个参数是self,指的是__new__方法生成的对象。

4,__new__方法的其余参数会和生成的对象一起继续传给__init__方法。

5,__new__方法的返回值通常调用其父类的__new__方法生成。

6,__init__方法不能有返回值。

7,__new__较少使用,可以用它实现单例模式,即一个类只能创建一个实例,有时候通过使用单例模式可以极大减少内存的占用。

用到的代码如下:

class Book(object):

#对象生成方法
def __new__(cls, title):
# 设计成单例模式
if not hasattr(cls,"_instance"):
cls._instance= super().__new__(cls)
print('in __new__')
return cls._instance

#对象初始化方法
def __init__(self, title):
print('in __init__')
super().__init__()
self.title = title

if __name__ == '__main__':
b = Book('The Spider Book')
b2= Book('The Flask Book')
print(id(b))
print(id(b2))
print(b.title)
print(b2.title)

看完上述内容,你们对如何进行init和new的对比及单例模式分析有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

方法 对象 生成 模式 内容 参数 分析 代码 内存 实例 更多 有时候 知识 篇文章 行业 资讯 资讯频道 频道 进一 支持 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 山东特亿宝互联网科技有限公司 中关村互联网 科技集团 科技创新与互联网经济 科技互联网项目 互联网科技公司发展 北京禾田雨橡互联网科技 科技与互联网的利与弊 中国的互联网科技企业的崛起 剑昆互联网络科技有限公司临桂 茂名市互联网科技产业园 互联网科技的全部知识 深圳艾果互联网通讯科技 工业互联网展湾科技股份有限公司 杭州披云加互联网科技有限公司 互联网领先科技宣传片 广州梦谷互联网科技有限公司领导 互联网公司属于科技吗 科技和互联网行业的特点 北京军民互联网科技公司 瑞安市蟠桃会互联网科技有限公司 美国互联网科技巨头监管 互联网科技公司电话 云电互联网科技 互联网科技视频素材 广州新华互联网科技学校电竞方面 工业互联网山东科技大学 江苏苏星互联网科技有限公司 黑云互联网科技有限公司 互联网科技创业计划的风险分析 伍佰万互联网科技是干嘛的
0