シングルトンは、クラスのインスタンスが 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 サイトの他の関連記事を参照してください。