मैं एक metaclass है: जब मैं का उपयोग इन मैं निम्नलिखित त्रुटि मिलती हैmetaclass त्रुटि: प्रकार .__ init __() लेता है 1 या 3 तर्क
class MyClass(object):
__metaclass__ = MyMeta
:
class MyMeta(type):
def __init__(cls, name, bases, dct):
# Do something
...
return super(MyMeta, cls).__init__(cls, name, bases, dct)
और एक वर्ग
E TypeError: Error when calling the metaclass bases
E type.__init__() takes 1 or 3 arguments
समस्या क्या है, और type.__init__()
तर्कों की एक सटीक चर संख्या क्यों लेते हैं?
ध्यान दें कि 'सुपर (माईमेटा, सीएलएस) .__ init __ (नाम, आधार, डीसीटी) 'यह करने का * सही * तरीका है, यहां तक कि 2.5 में (और 2.2 के रूप में अभी तक।) एकमात्र मामला जिसमें आप 'cls' को पहले तर्क के रूप में '__new__'' के साथ पास किया गया है,' __init__' के साथ नहीं (और यह 'टाइप' या मेटाक्लास के लिए विशिष्ट नहीं है।) क्या बदल गया है कि' टाइप .__ init __() 'अपवादों को निगलने से रोक दिया गया है, जैसा कि 'वस्तु .__ init __()'। –
@ julio.alegria http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/ –
@ हार्लेहोल्कोम्बे मुझे पता है कि आपके प्रश्न का उत्तर देने की अनुमति है, लेकिन ... 30 सेकंड? इसका मतलब है कि प्रश्न पोस्ट करने से पहले भी जवाब तैयार था, यह थोडा अजीब – juliomalegria