看不清
√十天内免登录忘记密码?
还没账号?马上注册
装饰器维护一个字典对象instances,缓存了所有单例类,只要单例不存在则创建,已经存在直接返回该实例对象。
__new__是真正创建实例对象的方法,所以重写基类的__new__方法,以此来保证创建对象的时候只生成一个实例
元类是用于创建类对象的类,类对象创建实例对象时一定会调用__call__方法,因此在调用__call__时候保证始终只创建一个实例即可,type是python中的一个元类。
__call__
type
全部评分
总计:赞0次
希尔瓦娜斯
之前只会使用第一种
K哥馆
最后发贴: 2023-12-30 16:11
一个高大上的名字
最后发贴: 2016-03-18 20:26
课课家运营团队
最后发贴: 2021-11-01 22:54
起个名字你猜我叫啥
最后发贴: 2016-03-08 22:23
一路风景都看透
最后发贴: 2016-03-08 22:18
论坛站务软件水平考试华为认证计算机等级PMP认证思科认证Photoshop3DMAX编程语言移动开发系统运维产品运营淘宝营销办公软件Ps修图云计算大数据摄影就业
<h3 style="border: 0px; margin: 0px 0px 20px; padding: 0px; font-size: 20px; font-stretch: normal; line-height: 30px; font-family: "Microsoft YaHei", "Myriad Pro", Lato, "Helvetica Neue", Helvetica, Arial, sans-serif; color: rgb(46, 46, 46); white-space: normal; background-color: rgb(255, 255, 255);"> 方法一:使用装饰器</h3><p style="border: 0px; margin-top: 0px; margin-bottom: 20px; padding: 0px; font-size: 15px; color: rgb(46, 46, 46); font-family: "Microsoft YaHei", 宋体, "Myriad Pro", Lato, "Helvetica Neue", Helvetica, Arial, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);"> 装饰器维护一个字典对象instances,缓存了所有单例类,只要单例不存在则创建,已经存在直接返回该实例对象。</p><p style="text-align: center"><img src="/Public/forum/ueditor/image/20170718/1500341194603374.jpg" alt="1500341194603374.jpg"/></p><p><br/></p><h3 style="border: 0px; margin: 0px 0px 20px; padding: 0px; font-size: 20px; font-stretch: normal; line-height: 30px; font-family: "Microsoft YaHei", "Myriad Pro", Lato, "Helvetica Neue", Helvetica, Arial, sans-serif; color: rgb(46, 46, 46); white-space: normal; background-color: rgb(255, 255, 255);"> 方法二:使用基类</h3><p style="border: 0px; margin-top: 0px; margin-bottom: 20px; padding: 0px; font-size: 15px; color: rgb(46, 46, 46); font-family: "Microsoft YaHei", 宋体, "Myriad Pro", Lato, "Helvetica Neue", Helvetica, Arial, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);"> __new__是真正创建实例对象的方法,所以重写基类的__new__方法,以此来保证创建对象的时候只生成一个实例</p><p style="text-align: center"><img src="/Public/forum/ueditor/image/20170718/1500341334198211.jpg" alt="1500341334198211.jpg"/></p><p><br/></p><p><br/></p><h3 style="border: 0px; margin: 0px 0px 20px; padding: 0px; font-size: 20px; font-stretch: normal; line-height: 30px; font-family: "Microsoft YaHei", "Myriad Pro", Lato, "Helvetica Neue", Helvetica, Arial, sans-serif; color: rgb(46, 46, 46); white-space: normal; background-color: rgb(255, 255, 255);"> 方法三:使用元类</h3><p style="border: 0px; margin-top: 0px; margin-bottom: 20px; padding: 0px; font-size: 15px; color: rgb(46, 46, 46); font-family: "Microsoft YaHei", 宋体, "Myriad Pro", Lato, "Helvetica Neue", Helvetica, Arial, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);"> 元类是用于创建类对象的类,类对象创建实例对象时一定会调用<code style="border: 0px; margin: 0px; padding: 0px; font-family: Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace;">__call__</code>方法,因此在调用<code style="border: 0px; margin: 0px; padding: 0px; font-family: Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace;">__call__</code>时候保证始终只创建一个实例即可,<code style="border: 0px; margin: 0px; padding: 0px; font-family: Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace;">type</code>是python中的一个元类。</p><p style="text-align: center"><img src="/Public/forum/ueditor/image/20170718/1500341515414718.jpg" alt="1500341515414718.jpg"/></p>