मेरे पास प्रलेखन ब्लाउट है, क्योंकि जब भी मुझे एक जटिल बतख-प्रकार का सामना करना पड़ता है, मुझे "इस बतख के प्रकार" कहने के लिए कुछ तरीका चाहिए, लेकिन इसके बजाय "आपके फ़ंक्शन को इस इनपुट की आवश्यकता होती है, लेकिन यह दस्तावेज नहीं करता है ", और उसके बाद इसे दस्तावेज। यह जैसे कि निम्न, फूला हुआ, दोहराए दस्तावेज में परिणाम:एक बतख प्रकार को कैसे दस्तावेज़ित करें?
def Foo(arg):
"""
Args:
arg: An object that supports X functionality, and Y functionality,
and can be passed to Z other functionality.
"""
# Insert code here.
def Bar(arg):
"""
Args:
arg: An object that supports X functionality, and Y functionality,
and can be passed to Z other functionality.
"""
# Insert code here.
और इसी तरह, और इतने पर, Baz
, Qux
, और अन्य कार्यों के लिए। मुझे लिखने के कुछ छोटे तरीके की आवश्यकता है "arg
एक (वस्तु का प्रकार) है"।
कुछ बतख प्रकारों के लिए, यह के रूप में "एक dict जैसी वस्तु 'के रूप में आसान है: हम जानते हैं कि हम एक dict की उम्मीद है, और इसलिए, हम क्या पारित करने के लिए पता है। एक dict
, या ऐसा कुछ जो नकल कर सकता है।
मुझे लगता है कि सी ++ में टेम्पलेट प्रकारों के साथ एक ही समस्या है। हास्केल के पास यह होगा, लेकिन कोई इसे दस्तावेज करने के लिए एक प्रकार की कक्षा की परिभाषा का उपयोग कर सकता है। (नोट: हास्केल कक्षाएं! = जावा/सी ++/पायथन/आदि में कक्षाएं) (नोट: मैं वास्तव में हास्केल में प्रोग्राम नहीं करता हूं, इसलिए मुझे माफ कर दो अगर यह एक क्रोधित उदाहरण है।)
क्या मुझे पारंपरिक जाना चाहिए ओओ मार्ग, और बस एक बेस क्लास लिखें, और कहें, "दस्तावेज़ों में इस आधार वर्ग की तरह कुछ भी"? कोड बेस क्लास से प्राप्त करने के लिए लागू नहीं होगा (क्योंकि ऑब्जेक्ट से इसके लिए कोई आवश्यकता नहीं है), और बेस क्लास इंटरफ़ेस के गुणों को दस्तावेज को छोड़कर कोई मूल्य नहीं जोड़ता है, अनिवार्य रूप से।
दूसरी तरफ, मैं प्रोग्रामिंग पाइथन हूं, और मैं एक भाषा के मुहावरे में प्रोग्राम करने की कोशिश करता हूं। (जैसा कि अन्यथा आमतौर पर दर्द होता है।) बेस क्लास विरासत कार्यक्षमता के लिए अच्छे होते हैं, लेकिन जब आपकी बेस क्लास पूरी तरह से सारणी होती है, तो यह एक बतख-टाइप भाषा में मूल्य जोड़ने लगती नहीं है।
संपादित: जवाब के लिए: मुझे पता है कि बतख टाइपिंग है (उस पोस्ट से स्पष्ट होना चाहिए)। मैं कहां दस्तावेज करता हूं यह सवाल है, esp। जब दस्तावेज संलग्न करने के लिए कोई वर्ग मौजूद नहीं है।
मुझे "जैसे कार्य" शब्द पसंद है और दस्तावेजी आवश्यकताओं को सामान्य रखें जब तक कि अधिक जानकारी का खुलासा करने के लिए कोई विशिष्ट कारण न हो। उदाहरण के लिए, यदि केवल एक सूचकांक और गिनती की आवश्यकता है, तो भी मैं "सूची की तरह कार्य करता हूं" कहूंगा। अन्य प्रकार के लिए, यह वही है: "एक्स एक जानवर की तरह कार्य करता है", जहां संभवतः यह विचार है कि "कुत्ता एक पशु है" को कहीं और दस्तावेज/सुनिश्चित किया जाता है। –
@pst: हाँ, लेकिन एक पशु क्या है, और हम पशु की क्या अपेक्षा करते हैं, और हम इसे कहां दस्तावेज करते हैं? – Thanatos
'कक्षा पशु' और 'कक्षा कुत्ता' कहीं भी, अपने स्वयं के दस्तावेज़ीकरण के साथ :) पायथन कक्षा-उदाहरण मॉडल में बहुत जड़ है। –