class cymel.pyutils.pyutils.Singleton

Inheritance diagram of Singleton
class cymel.pyutils.pyutils.Singleton(clsname, bases, attrs)

ベースクラス: type

シングルトンクラスを作る為のメタクラス。

その型のインスタンスは1つしか生成されなくなる。

インスタンスが生成されようとする時、同じ型のインスタンスが 既に存在していればそれが返されるだけである。 生成時の引数内容の違いも考慮されずに流用される点には注意が必要。

>>> import cymel.main as cm
>>> class Foo(cm.with_metaclass(cm.Singleton, object)):
...     def __init__(self, v):
...         self._v = v
...     def __repr__(self):
...         return '%s(%s)' % (self.__class__.__name__, repr(self._v))
...
>>> class Bar(Foo):
...     pass
...
>>> a,b,c,d = Foo(1), Foo(2), Bar(3), Bar(4)
>>> a,b,c,d
(Foo(1), Foo(1), Bar(3), Bar(3))
>>> a is b
True
>>> a is c
False
>>> c is d
True
>>> del a,b,c,d
>>> b = Foo(2)
>>> b
Foo(2)
>>> del b