2012-03-04 3 views
0

나는 싱글이 한 가지 방법 사용하려고 : 난는 객체 .__ 초기화 __()는 매개 변수를 사용하지 않는

Error when calling the metaclass bases object.init() takes no parameters

: 나는 오류를 가지고

class Singleton(object):              
    def __init__(self, name, bases, dict):         
     super(Singleton, self).__init__(name, bases, dict)     
     self._instance = None             

    def __call__(self):              
     if self._instance is None:           
      self._instance = super(Singleton, self).__call__() 
     return self._instance             


class NewClass(object):  
    __metaclass__ = Singleton 

을 잘 모르겠다. 나는 인수가 무엇인지 정확히 이해하고있다. __init__ 방법 : name, bases, dict. 그리고 실제로 - 내 실수/이해가 어디 있지?

답변

7

메타 클라스는 type이 아니며 object이 아닙니다.

+0

이 답변은 잘못되었습니다. 최소한 기술적으로는. [Python2] (https://docs.python.org/2.7/reference/datamodel.html#customizing-class-creation) 및 [Python3] (https://docs.python.org/3/reference) 문서 /datamodel.html#determining-the- appropriate-metaclass)는 유형에서 상속하지 못하게합니다 (권장하지는 않지만). 파이썬 2에서는 어떤 호출도 가능합니다. – Elazar

관련 문제