0

「静的クラス属性」のようなJavaを使用して、Pythonでシングルトンクラスを作成したいと思います。Python シングルトンに関するいくつかの投稿を読みましたが、単純なモジュールをシングルトンとして使用する以外に解決策が見つかりません。

このコード ( PEP318 ) を拡張して、関数からアクセスできる「静的クラス属性」で使用する方法はありますか?

def singleton(cls):
    instances = {}
    def getinstance():
        if cls not in instances:
            instances[cls] = cls()
        return instances[cls]
    return getinstance

@singleton
class MyClass:
    ...
4

1 に答える 1

7

TBH、私はいつもシングルトンがアンチパターンであることを発見しました。

インスタンスを 1 つしか持たないオブジェクトが必要な場合は、何かをインスタンス化する必要さえあるでしょうか。次のようなことをしてください...

class MyCounter(object):
    count = 0

    @classmethod
    def inc(cls, delta=1):
        cls.count += delta

>>> MyCounter.count
0
>>> MyCounter.inc()
>>> MyCounter.count
1
>>> MyCounter.inc(5)
>>> MyCounter.count
6
于 2013-04-18T13:21:16.290 に答える