2012-08-11 44 views
9

में __init__ के लिए डॉकस्ट्रिंग निर्दिष्ट करने के लिए कैसे करें शायद एक बेवकूफ प्रश्न: सी एक्सटेंशन लिखते समय __init__ जैसे विशेष कार्यों के लिए डॉकस्ट्रिंग निर्दिष्ट कैसे कर सकता है? सामान्य तरीकों के लिए, विधि तालिका में डॉकस्ट्रिंग के लिए प्रावधान है। निम्नलिखित स्वत: जनरेट प्रलेखन प्रदर्शित किया जाता है जब मैं मदद (MyClass) की कोशिश:पायथन सी एक्सटेंशन

__init__(...) 
     x.__init__(...) initializes x; see help(type(x)) for signature 

लेकिन यह है कि मैं क्या ओवरराइड करना चाहते है।

उत्तर

1

मुझे लगता है कि सबसे आम बात यह है कि विभिन्न कार्यों के लिए परिभाषाओं को tp_doc में डालें और बस इसे छोड़ दें। इसके बाद आप ऐसा कह सकते हैं और अपने ऑब्जेक्ट के दस्तावेज़ को देख सकते हैं। यह सब मानक पुस्तकालय में होता है।

आप वास्तव में (आदि tp_init,) विभिन्न स्लॉट्स पर लेखन __doc__ के किसी भी विकल्प नहीं है क्योंकि वे एक wrapper_descriptor से लिपटे रहे हैं जब आप PyType_Ready कहते हैं, और एक wrapper_descriptor पर docstring केवल पढ़ने के लिए है।

मुझे लगता है कि स्लॉट का उपयोग करना छोड़ना और अपनी विधि (उदा। __init__) को अपने MemberDefs में जोड़ना संभव है, लेकिन मैंने कभी कोशिश नहीं की है।

+1

ऐसा लगता है कि ऐसा ही है। मैंने पहले ही PymethoDef सरणी में \ _ \ _ init \ _ \ _ डालने का प्रयास किया था। हालांकि यह वहां रखने के लिए कोई नुकसान नहीं करता है, दुभाषिया मेरे द्वारा प्रदत्त दस्तावेज़ स्ट्रिंग को अनदेखा करता है। – subhacom