2011-07-13 12 views
19

पायथन में किस बिंदु पर get संपत्ति प्राप्त करते हैं? जैसे ही वे कक्षा में परिभाषित होते हैं? पाइथन मुझे बिना किसी तर्क के एक विधि को परिभाषित करने देता है (यहां तक ​​कि पहले self तर्क भी नहीं)?पाइथन में विधियों, 'classmethod`, और `staticmethod` को कैसे लागू किया गया है?

मुझे पता है कि classmethod और staticmethod का उपयोग कैसे करें, और मुझे पता है कि वे अंतर्निहित कार्य हैं, लेकिन एक समारोह के साथ क्या होता है जो सजाया जाता है?

अनिवार्य रूप से, मैं कक्षा की परिभाषा और कक्षा निर्माण के बीच होने वाले "जादू" के बारे में सोच रहा हूं।

उत्तर

21

इसे देखें।

http://docs.python.org/howto/descriptor.html#static-methods-and-class-methods

तुम भी, वर्ग और स्थिर विधि वस्तुओं के लिए स्रोत कोड पर एक नज़र ले जा सकते हैं funcobject.c में:

http://hg.python.org/cpython/file/69b416cd1727/Objects/funcobject.c

कक्षा विधि वस्तु परिभाषा लाइन 694 पर शुरू होता है, जबकि स्थैतिक विधि ऑब्जेक्ट परिभाषा लाइन 852 पर शुरू होती है। (मुझे यह मजाकिया लगता है कि उनके पास funcobject.c में "विधि" शीर्षक वाले आइटम हैं जब methodobject.c भी मौजूद है।)

+3

आह, पाइथन लागू करने के लिए उनमें से बहुत अच्छा है mentations। –

+0

खुशी है कि मैं मदद कर सकता हूं। – JAB

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