如何进行init和new的对比及单例模式分析
发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,今天就跟大家聊聊有关如何进行init和new的对比及单例模式分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。简单总结如下:1,__new__
千家信息网最后更新 2025年02月04日如何进行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安全错误
数据库的锁怎样保障安全
网络安全执法检查自查报告
sql数据库外网如何访问
软件开发服务采购的原因
做网络安全的维护着PPT
网络安全证书管理工具
连云港软件开发公司哪家好
护苗网络安全宣传片观后感
fbi网络安全局助理局长
学校网络安全的设计
web服务器的基本安全设置
万物互联网金融科技有限公司
全国网络安全中心
微软怎么没有语音服务器
征信数据库可以分为
软件开发工程师都做些啥
安徽网络技术服务优点
数据库的索引是怎么创建的
sql创建数据库sql
想学网络技术学什么好
列族数据库属于非关系数据库吗
机房中心服务器运行声音很大
服务器管理器缺少源文件
软件开发对人有用吗
网络安全事件 级别
网络技术支持长薪
旧岛koa数据库
网络安全与执法的研究方向
网络技术三级有什么好处
网络安全信息保护办公室
安溪县城厢蓝波网络技术服务部