2013-06-02 6 views
5

उदाहरण के लिए, निम्न कोड में:शुरू होने पर कक्षा को "बुलाया" क्यों मिलता है? - अजगर

class test: 
    print "Hi" 

पायथन स्वचालित रूप से प्रिंट होता है 'हाय'। क्षमा करें अगर यह एक स्पष्ट प्रश्न है, लेकिन मुझे पता नहीं चल रहा है कि क्यों पाइथन ऐसा करेगा जब तक कि 'परीक्षण' ऑब्जेक्ट शुरू नहीं किया गया। * मैंने कुछ महीने पहले सामान्य रूप से प्रोग्रामिंग शुरू की थी और पायथन मेरी पहली भाषा है, इसलिए कृपया मुझ पर कुछ दया डालें।

उत्तर

7

आप कक्षा बना रहे हैं; परिभाषा बनाने के लिए एक वर्ग के शरीर को एक समारोह के रूप में निष्पादित किया जाता है। उस 'फ़ंक्शन' का स्थानीय नामस्थान वर्ग बनाने वाले गुणों का सेट बनाता है। class statement दस्तावेज़ीकरण देखें।

में कक्षा निकाय को निष्पादित नहीं किया गया है; फ़ंक्शन परिभाषाओं की तरह, आपको उन्हें पहले कॉल करने की आवश्यकता है। लेकिन अगर आपने पहले क्लास बॉडी को फोन नहीं किया था, तो आप नहीं जानते कि कक्षा के पास कौन सी विधियां हैं।

इसी तरह, मॉड्यूल नामस्थान बनाने के लिए मॉड्यूल आयात करते समय मॉड्यूल में किसी भी शीर्ष-स्तरीय कोड को निष्पादित किया जाता है। यदि आप मॉड्यूल में print "Hi" डालते हैं, तो इसे तुरंत निष्पादित भी किया जाता है।

+0

मुझे नहीं लगता कि कक्षा के शरीर को एक समारोह के रूप में निष्पादित किया जाता है। मेरा मानना ​​है कि इसका सामना होने पर इसे निष्पादित किया जाता है (या इसके अंत के तुरंत बाद)। साथ ही, जब आप परिभाषा के बाद बाद में कक्षा को कॉल करते हैं, तो आप वास्तव में अपने '__init __()' फ़ंक्शन को कॉल कर रहे हैं (या यह मूल श्रेणी है, अगर उसने स्वयं को परिभाषित नहीं किया है)। – martineau

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