如何进行init和new的对比及单例模式分析
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,今天就跟大家聊聊有关如何进行init和new的对比及单例模式分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。简单总结如下:1,__new__
千家信息网最后更新 2025年12月02日如何进行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安全错误
数据库的锁怎样保障安全
软件开发属不属于研发类经营范围
光伏监控软件开发公司
ESP是不是网络安全协议
c 有什么软件开发
枣庄商城软件开发产品
软件开发交付物清单表
网络安全文稿800字
我国的网络安全协会
少年儿童网络安全科普教育活动
计算机网络安全专业介绍
日期存入数据库
数据库技术与应用教程蒋丽影
江苏惠普服务器云主机
福州中路网络技术开发有限公司
衡阳帮助软件开发哪家好
asp net与数据库连接
西安数据库培训课程
mac 数据库管理公里
桓台瓷砖软件开发报价
虚拟币量化跟单软件开发
江苏品牌网络技术费用
翼猫网络安全测评
随身服务器
怎么把电脑做成服务器外面的网络
大连软件开发培训多少钱
网络技术 计算机科学与技术
网络安全行业的发展和现状
网络安全产品合作
魔兽世界怀旧服奥罗服务器是几区
vision数据库属性