LoginSignup
3
5

More than 5 years have passed since last update.

pythonでシングルトンが欲しくなったらモジュールをシングルトンと思えば良い

Posted at

と、思います。

自分自身への参照が欲しくなったら、モジュール内に

import sys
self = sys.modules[__name__]

などと書いておくと便利です。
python3系を使っているのであれば

import importlib
self = importlib.import_module(__name__)

でも良いです。

なぜ唐突にこういうことを言いたくなったかというと、昔書いたこういうコードを眺めていて本当に黒歴史だったなと思ったからです。普通にhogefactory.pyというモジュールにcreate関数を定義するだけで良い。

somemodule.py
class HogeFactory:
    @staticmethod
    def create(params):
        """ Hogeオブジェクトを生成して返すメソッド """
        # 色々と複雑な処理
        # ...
        return Hoge(some_args, some_kwargs)

余談ですが、pythonのstaticmethodってどういう時に使えば良いのでしょうか?最近書いた覚えがありません。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5