class Singleton(type):
def __init__(cls, name, bases, dict):
super(Singleton, cls).__init__(name, bases, dict)
cls._instance = None
def __call__(cls, *args, **kw):
if cls._instance is None:
cls._instance = super(Singleton, cls).__call__(*args, **kw)
return cls._instance
class MyClass(object):
__metaclass__ = Singleton
if __name__ == '__main__':
one = MyClass()
two = MyClass()
two.a = 3
print one.a
print two.a
print id(one)
print id(two)
print one == two
print one is two
输出
ssh://wfq@192.168.174.132:22/home/wfq/python27/bin/python -u /home/wfq/ops/test/Singleton.py
3
3
140465570776784
140465570776784
True
True
Process finished with exit code 0