fork download
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. class Singleton(type):
  5. def __init__(cls, name, bases, dict):
  6. super(Singleton, cls).__init__(name, bases, dict)
  7. cls.INSTANCE = None
  8.  
  9. def __call__(cls, *args, **kwargs):
  10. if cls.INSTANCE is None:
  11. cls.INSTANCE = super(Singleton, cls).__call__(*args, **kwargs)
  12. return cls.INSTANCE
  13.  
  14. class A(object):
  15. __metaclass__ = Singleton
  16.  
  17.  
  18. class B(A):
  19. pass
  20.  
  21. a = A()
  22. r = A()
  23. b = B()
  24. s = B()
  25.  
  26. print a is r
  27. print b is s
  28.  
Success #stdin #stdout 0.01s 7728KB
stdin
Standard input is empty
stdout
True
True