2009-02-09 12 views
12

मेरे पास एक स्क्रिप्ट है जहां मैं मॉड्यूल में गतिशील रूप से लोड करने के लिए कुछ जादू सामग्री करता हूं, और मॉड्यूल में मिली पहली कक्षा को तुरंत चालू करता हूं। लेकिन मैं अब Python 3 में types.ClassType का उपयोग नहीं कर सकता 3. अब ऐसा करने का सही तरीका क्या है?टाइपों के साथ क्या हुआ। पाइथन 3 में क्लास टाइप?

उत्तर

14

मैं यह पता लगा। ऐसा लगता है कि कक्षाएं प्रकार "प्रकार" हैं। यहां रनटाइम पर कक्षाओं और अन्य वस्तुओं के बीच अंतर करने का एक उदाहरण दिया गया है।

>>> class C: pass 
... 
>>> type(C) 
<class 'type'> 
>>> isinstance(C, type) 
True 
>>> isinstance('string', type) 
False 
+0

धन्यवाद! मैंने 'टाइप (सी) टाइप टाइप' का उपयोग करने की कोशिश की, जो सरल वर्गों के लिए काम करता था, लेकिन जब सी मेटाक्लास का उपयोग नहीं करता था। 'instinstance (सी, प्रकार) ', जैसा कि आपने लिखा है, फिर भी उस मामले में' ट्रू 'लौटाता है। – goodmami

5

इसका उपयोग classic classes के लिए किया गया था। पायथन 3 में वे चले गए हैं। मैं आप की तरह कुछ इस्तेमाल कर सकते हैं लगता है:

issubclass(ClassName, object) 
संबंधित मुद्दे