2011-02-18 8 views
5

मैं वर्तमान में पाइथन 2.6.5 सीख रहा हूं और मुझे पुरानी शैली कक्षाओं और नई शैली कक्षाओं के बारे में पता चला।पायथन - क्या मुझे पुरानी स्टाइल कक्षाओं के बारे में जानने की ज़रूरत है?

मैं समझता हूँ कि इन कक्षाओं में अभी भी केवल पिछली संगतता के लिए और कहा कि वे अजगर 3.

में निकाल दिए जाते हैं तो सवाल यह है मौजूदा कर रहे हैं: भाषा के लिए एक नवागंतुक के रूप में , मैं के बारे में जानने की जरूरत है क्लासिक कक्षाएं?

पीएस मैं पाइथन 2 सीख रहा हूं क्योंकि पाइथन 3 अभी भी ढांचे में पूरी तरह से समर्थित नहीं है और मैं कुछ ढांचे को भी सीखना चाहता हूं। ढांचे को पकड़ने पर योजना पाइथन 3 पर जाने के लिए होगी, लेकिन तब तक, क्या मुझे पुरानी स्टाइल कक्षाओं के बारे में चिंता करने की ज़रूरत है?

उत्तर

13

नहीं परेशान मत करो। बस object (या object से प्राप्त कक्षाओं से) के सभी वर्गों को प्राप्त करें और आपको जाना अच्छा होगा। फिर जब आप पाइथन 3 में संक्रमण करते हैं तो आप सिंटैक्स के उस बिट को भूल सकते हैं।

इस बिंदु पर पुराने शैली के वर्गों का उपयोग करने या यहां तक ​​कि सीखने का कोई फायदा नहीं है।

तो बस सुनिश्चित करें कि आपके वर्ग घोषणाओं के सभी इस तरह दिखने:

class foo(object): 
    ... 

(या object जो object से इनहेरिट करता है के अलावा कुछ से विरासत), और फिर नाटक इस तरह से यह है कि है हमेशा किया गया है!

4

हालांकि मैं डैनियल डिपालो से सहमत हूं कि आपको अपने कोड में पुरानी-शैली कक्षाओं का उपयोग करने की आवश्यकता नहीं है, ऐसे समय होंगे जब आपको उन्हें थोड़ा समझने की आवश्यकता होगी।

उदाहरण के लिए, पुरानी शैली के वर्गों के साथ आप माता-पिता विधि को कॉल करने के लिए super का उपयोग नहीं कर सकते हैं - और जब आप कोशिश करते हैं और सबक्लास करते हैं, तो यह आपको urllib2.Request क्लास काट सकता है। यदि आप इसे महसूस किए बिना ऐसा करते हैं तो आपको क्रिप्टिक त्रुटि super() argument 1 must be type, not classobj मिल जाएगी, जो डीबग करने में आयु ले सकती है।

(आप शायद बता सकते हैं, मैं वहाँ गया है ...)

+0

+1: http://www.artima.com/weblogs/viewpost.jsp?thread=237121 –

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

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