class Test(object):
def __init__(self):
print 'init'
self.init = 'self.init'
@classmethod
def getInstance(cls):
if not hasattr(cls, 'instance'):
cls.instance = super(Test, Test).__new__(Test)
cls.instance.__init__()
return cls.instance
t = Test.getInstance()
print t
print t.init
print Test.getInstance()
print Test()
output is
init
<__main__.Test object at 0x7f205e054290>
self.init
<__main__.Test object at 0x7f205e054290>
init
<__main__.Test object at 0x7f205e054450>