ブックマーク / media.accel-brain.com (1)

  • 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
  • 1