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