栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python单例模式的几种写法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python单例模式的几种写法

1. 利用__metaclass__

这种写法的好处是,一处声明,到处引用,只要是想弄成单例的,直接设置就可以了,废话不说上代码

# 注意,继承type
class Singleton(type):

	def __call__(cls, *args, **kwargs):
		if not hasattr(cls, '_instance'):
			cls._instance = super(Singleton, cls).__call__(*args, **kwargs)
		return cls._instance


class Test(object):
	# __metaclass__
	__metaclass__ = Singleton

t1 = Test()
t2 = Test()
print t1 == t2

想深入了解, 可以搜索python type详解,以及python类初始化的流程

2. 每个类单独写

这种写法好处是,可以给自己的单例类加上特有的逻辑

class MyTest(object):
	def __new__(cls, *args, **kwargs):
		if not hasattr(cls, '_instance'):
			# 两种写法,实际上都是为了调用object.__new__
			cls._instance = object.__new__(cls, *args, **kwargs)
			# cls._instance = super(MyTest, cls).__new__(cls, *args, **kwargs)
		return cls._instance

a = MyTest()
b = MyTest()
print a == b
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/844025.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号