2012-03-13 6 views
10

रूप में परिभाषित किया कक्षाओं का एक संग्रह नहीं कर सकते हैं:लेखन त्रुटि: त्रुटि जब metaclass ठिकानों बुला एक नई शैली वर्ग केवल क्लासिक ठिकानों

TypeError: Error when calling the metaclass bases 
    a new-style class can't have only classic bases 
:

class A(): 
    @staticmethod 
    def call(): 
     print('a') 

class C(type): 
    def __repr__(self): 
     return 'somename' 

class B(A): 
    __metaclass__ = C 

    @staticmethod 
    def call(): 
     print('b') 

    def boundcall(self): 
     print('bound') 

जब चलाने के लिए, इस त्रुटि देता है

मुझे मेटाक्लास (मुझे लगता है) को मेरे कोड में बी के ज्ञात स्ट्रिंग प्रस्तुति की आवश्यकता है। उस बिंदु के बगल में होने का कारण है लेकिन यह भविष्य के अपडेट के साथ बहुत मदद करेगा।

तो मान लीजिए कि मुझे बी और बी का मेटाक्लास होना चाहिए, ए के उप-वर्ग होंगे क्या कोई मुझे बता सकता है कि यहां क्या गलत हो रहा है और मैं त्रुटि को हटाने के लिए क्या कर रहा हूं, मैं कैसे बदल सकता हूं?

उत्तर

16

समस्या यह होना चाहिए लाइन

class A(): 

है:

class A(object): 

इस तरह, आप एक एक नई शैली वर्ग बनाते हैं। खाली माता-पिता को कोई समझ नहीं आता है, और फिर भी, मैं उन्हें स्टैक ओवरफ्लो और हर जगह देख रहा हूं। क्यों ओह क्यों?

संबंधित मुद्दे