2017年6月24日のブックマーク (2件)

  • Pythonでシングルトン!! | KIWAMIDEN

    いろいろ論議がでそうなデザインパターンの1つである「Singleton」をPythonでやる方法を見ていきたいと思います! Singletonとは Singletonは、オブジェクト指向のプログラムにおけるデザインパターンの1つです。作成されるクラスのインスタンスが、1つしか生成されないことを保証する仕組みです。アプリケーション全体で、絶対に1つにしないといけない仕組みの実装に使用されています。 これはいまいちかも? 継承されることを想定して考えると、コンストラクタ(厳密には違います)の「__new__」で実装するのはいまいちかもしれません。 だいたいこんな感じのコードかと思います。 class Singleton(object): _instance = None def __new__(cls, *args, **kwargs): if cls._instance is None: c

    Pythonでシングルトン!! | KIWAMIDEN
  • Python3のSingletonはmetaclassで実装する | Accel Brain; Media

    Python3系でGoFのデザイン・パタン:Singletonを実装する方法は幾つか挙げられるが、この言語が多重継承を可能にしているという背景知識さえあれば、以下のパタンはお勧めできないことがわかる。 問題設定:Python3の基底クラスを前提としたSingleton Pattern 基底クラスとして継承されることを想定して設計すると、疑似的なコンストラクタ(≠コンストラクタ)に相当する__new__がオーバーライドされる可能性を考慮しなければならなくなる。結果、これに対応した処理が煩雑になる恐れがある。 class Singleton_(object): ''' Singletonのオススメできないパタン。 Singletonインスタンスを実現するが、基底クラスとして記述しているために、 多重継承時に__new__がオーバーライドされる可能性などを考慮しなければならない。 ''' # イ

    Python3のSingletonはmetaclassで実装する | Accel Brain; Media