2017-02-15 14 views
6

मैंने देखा कि सभी 3 ->class foo, class foo() और class foo(object) का उपयोग किया जा सकता है, लेकिन मैं उलझन में हूं कि इन 3 के बीच क्या अंतर है, यदि कोई है? (मैं संपत्तियों में मतलब मुख्य रूप से python3)कक्षा foo, कक्षा foo() और कक्षा foo (ऑब्जेक्ट) के बीच अंतर?

+0

सभी तीन यहां समान हैं। –

+0

पायथन 2 पर, पहले दो रूप खराब चीजें करते हैं। पायथन 3 पर, वे समान हैं (जब तक कि आपने 'ऑब्जेक्ट' के लिए कुछ बेवकूफ नहीं किया)। – user2357112

उत्तर

9

उन्हें टूट करते हैं:

  1. class foo:

    • अजगर 3: यह आमतौर पर जाने के लिए रास्ता नहीं है। डिफ़ॉल्ट रूप से, पायथन आपके लिए बेस क्लास के रूप में object जोड़ता है।
    • पायथन 2: यह पुरानी शैली classobj बनाता है जो आपको सभी प्रकार के सिरदर्द का कारण बनता है।
  2. class foo():

    • अजगर 3 और अजगर 2: दोनों अजगर संस्करणों के लिए class foo की तरह, यह, बंद ट्रिम यह बदसूरत लग रहा है और कोई फर्क नहीं पड़ता।
  3. class foo(object):
    • अजगर 3 और अजगर 2: दोनों अजगर में, एक नई शैली वर्ग सभी उपहार सबसे पता है कि में परिणाम है। लोग आमतौर पर पाइथन 2 में कोड लिखते समय इस फॉर्म का उपयोग करते हैं, स्पष्ट रूप से ऑब्जेक्ट से विरासत में प्राप्त करने से क्लास पाइथन 2 में नई शैली बन जाती है और 3 (कुछ अतिरिक्त टाइपिंग के अलावा) में कोई फर्क नहीं पड़ता है।
संबंधित मुद्दे