SingletonMetaClass module

Python singletons

Предоставляет возможность создания одноэкземплярных классов Python

>>> class Bar(Singleton):
...     def __init__(self):
...         self.b = 14
...     def h(self):
...         print 12
...     def __getattr__(self, name):
...        print 'logger:', name
...
>>> class Bar2(object):
...     __metaclass__ = SingletonMeta
...
>>> class Foo(object):
...     __metaclass__ = SingletonMeta
...     def __init__(self, a):
...         self.a = a
...         print 'Inited! Arg:', self.a
...     def hey(self):
...         print 'Hey! Arg:', self.a
...     def calc(self, b):
...         return self.a + b
...
>>> Foo(1).hey()
Inited! Arg: 1
Hey! Arg: 1
>>> Foo().hey()
Hey! Arg: 1
>>> Foo() == Foo()
True
>>> a = Foo()
>>> a.calc(3) == 4
True
>>> Foo().calc(2) == a.calc(2)
True
>>> Bar() == Bar()
True
>>> Bar2() == Bar2()
True
>>> Bar2() == Bar()
False
>>> Foo() == Bar()
False
>>> Foo.a
1
>>> Bar.b
14
>>> Bar.core
logger: core
class SingletonMetaClass.Singleton

Базовые классы: object

instance = <SingletonMetaClass.Singleton object at 0x055293B0>
class SingletonMetaClass.SingletonMeta(name, bases, dict)

Базовые классы: type