2016-11-07 9 views
0

自分のコードでシングルトンを作成する必要がありました。だから私はthese instructions, method 3に従った。ここでインスタンス化中のシングルトン、メタクラス、エラー

は私が持っているコードです:

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] 

def MyCfg(object): 
    __metaclass__ = Singleton 
    def __init__(self, p1 = 1, p2 = 2): 
     # Some code 

my_cfg = MyCfg() 

このコードを実行whenIしかし、私は次のエラーを取得しない:

TypeError: MyCfg() takes exactly 1 argument (0 given) 

は私がpythonやプログラミングに新しいものではないが、私決してこのレベルでpythonで働いた。私は正確にSingletonクラスで何が起こるのか理解しようとしてきましたが、私は理解できません。

誰でもこのコードがエラーを生成する理由を説明できますか?

def MyCfg(object) 

私はあなたが意味かなり確信している:あなたが持っている

+0

@shaktimaan動作しませんでした。まだ同じエラーが発生しています。 – flashburn

+1

'MyCfg'はクラスではなく関数です。 'def'を' class'に変更してください。 – Dunes

答えて

2

あなたの現在のコードで、あなたが機能を定義しているので、

あなたが見ているエラー(TypeError: MyCfg() takes exactly 1 argument (0 given))があるMyCfgという1つの引数をとります(あなたが提供していない)。

+0

それはまさにそれです。私はちょうどそれを考え出した。 – flashburn

関連する問題