ホームページ > バックエンド開発 > Python チュートリアル > ロギング用に Python でシングルトン パターンを実装するにはどうすればよいですか?

ロギング用に Python でシングルトン パターンを実装するにはどうすればよいですか?

DDD
リリース: 2024-12-20 05:08:09
オリジナル
831 人が閲覧しました

How to Implement a Singleton Pattern in Python for Logging?

Python でのシングルトンの実装

シングルトンは、クラスのインスタンスが 1 つだけ作成されるようにする設計パターンです。 Python でシングルトンを実装する場合の推奨事項は次のとおりです。

メタクラスを使用する

この方法にはいくつかの利点があります。

  • 真のクラスの動作
  • の自動処理継承
  • メタクラスを使用したシングルトンの明示の明確化
class Singleton(type):
    _instances = {}

    def __call__(cls, *args, **kwargs):
        if cls not in cls._instances:
            cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
        return cls._instances[cls]

class Logger(object):
    __metaclass__ = Singleton
ログイン後にコピー

他のメソッドの修正

元の投稿では、基本クラスの実装が間違っています。 super() を使用してクラスの _instances を参照し、クラスを引数として取る静的メソッドになるように new を修正する必要があります。

使用する場合シングルトン

が望ましいかどうかについては議論がありますが、シングルトンは特定の状況に適しています:

  • 定数: これらはグローバル定数のように機能します。ユーザーが変更できないため、一般に許容されると考えられています。
  • データ シンクのみ: データを排他的に受信するシングルトン (ロガーなど) は、共有状態と同じリスクを引き起こしません。システムを変更したり、他のユーザーに影響を与えたりすることはできません。

ロギングがユースケースである、提示されたシナリオでは、シングルトン パターンが適切な選択です。

以上がロギング用に Python でシングルトン パターンを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート