2016-11-07 1 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이 코드를 실행, 나는 다음과 같은 오류 얻을 : 나는 python 새로운 아니에요

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

및 프로그래밍 그러나 나는 결코 이 레벨에서 python으로 근무했습니다. 나는 정확하게 Singleton 클래스에서 일어나는 것을 이해하려고 노력하고 있었지만 알아 내지 못했습니다.

누구든지이 코드가 오류를 생성하는 이유를 설명 할 수 있습니까?

+0

@shaktimaan 작동하지 않았습니다. 여전히 같은 오류가 발생합니다. – flashburn

+1

'MyCfg'는 클래스가 아닌 함수입니다. 'def'를'class'로 변경하십시오. – Dunes

답변

2

당신은이 :

def MyCfg(object) 

나는 당신이 의미 확신 :

class MyCfg(object) 

오류는 (TypeError: MyCfg() takes exactly 1 argument (0 given))를보고있는 때문에 현재의 코드와 함께, 당신은 기능를 정의 MyCfg이라는 단일 인수 (제공하지 않음)가 필요합니다.

+0

네, 바로 그 것입니다. 나는 그걸 알아 냈어. – flashburn