python 单例模式(依据元类)
时间:2014-08-27 11:12:48
收藏:0
阅读:241
class Singleton2(type):
def __init__(cls, name, bases, dict):
super(Singleton2, cls).__init__(name, bases, dict)
cls._instance = None
def __call__(cls, *args, **kw):
if cls._instance is None:
cls._instance = super(Singleton2, cls).__call__(*args, **kw)
return cls._instance
class MyClass(object):
__metaclass__ = Singleton2
one = MyClass()
two = MyClass()
two.a = 3
print one.a
#3
print id(one)
#31495472
print id(two)
#31495472
print one == two
#True
print one is two
#True
评论(0)