मैं एक हल्का वर्ग लिख रहा हूं, जिसका उद्देश्य सार्वजनिक रूप से सुलभ होना है, और केवल कभी-कभी विशिष्ट तात्कालिकता में ओवरराइड किया जाता है। उस मामले के लिए, क्लास की विशेषताओं या किसी भी प्रकार की विशेषताओं के लिए डॉकस्ट्रिंग्स बनाने के लिए पायथन भाषा में कोई प्रावधान नहीं है। इन विशेषताओं का दस्तावेजीकरण करने के लिए क्या अपेक्षित और समर्थित तरीका है? वर्तमान में मैं इस तरह की चीज कर रहा हूं:
class Albatross(object):
"""A bird with a flight speed exceeding that of an unladen swallow.
Attributes:
"""
flight_speed = 691
__doc__ += """
flight_speed (691)
The maximum speed that such a bird can attain.
"""
nesting_grounds = "Raymond Luxury-Yacht"
__doc__ += """
nesting_grounds ("Raymond Luxury-Yacht")
The locale where these birds congregate to reproduce.
"""
def __init__(self, **keyargs):
"""Initialize the Albatross from the keyword arguments."""
self.__dict__.update(keyargs)
यह वर्ग के डॉकस्ट्रिंग में प्रारंभिक मानक डॉकस्ट्रिंग अनुभाग के साथ-साथ संवर्धित असाइनमेंट के माध्यम से प्रत्येक विशेषता के लिए जोड़े गए लाइनों के परिणामस्वरूप होगा __doc__
।
यद्यपि यह शैली डॉकस्ट्रिंग शैली के दिशानिर्देशों में स्पष्ट रूप से निषिद्ध प्रतीत नहीं होती है , यह एक विकल्प के रूप में भी उल्लेखित नहीं है। यहाँ लाभ यह है कि यह दस्तावेज़ की विशेषताओं के साथ-साथ उनकी परिभाषाओं के साथ-साथ एक प्रचलित कक्षा डॉकस्ट्रिंग बनाते समय, और डॉकस्ट्रिंग से जानकारी को दोहराने वाली टिप्पणियों को लिखने से बचने का एक तरीका प्रदान करता है। मैं अभी भी इस तरह से नाराज हूं कि मुझे वास्तव में दो बार विशेषताओं को लिखना होगा; मैं कम से कम डिफ़ॉल्ट मानों के दोहराव से बचने के लिए डॉकस्ट्रिंग में मूल्यों के स्ट्रिंग प्रतिनिधित्व का उपयोग करने पर विचार कर रहा हूं।
क्या यह तदर्थ सामुदायिक सम्मेलनों का जघन्य उल्लंघन है? क्या यह सही है? क्या कोई बेहतर तरीका है? उदाहरण के लिए, एक शब्दकोश बनाना संभव है जिसमें विशेषताओं के लिए मान और docstrings हों और फिर वर्ग में सामग्री जोड़कर __dict__
वर्ग घोषणा के अंत की ओर docstring; इससे विशेषता नाम और मान दो बार टाइप करने की आवश्यकता समाप्त हो जाएगी। संपादित करें : यह अंतिम विचार है, मुझे लगता है, वास्तव में संभव नहीं है, कम से कम गतिशील रूप से डेटा से पूरी कक्षा के निर्माण के बिना नहीं, जो वास्तव में एक बुरे विचार की तरह लगता है जब तक कि ऐसा करने का कोई अन्य कारण न हो।
मैं अजगर के लिए बहुत नया हूं और अभी भी कोडिंग शैली के विवरण पर काम कर रहा हूं, इसलिए असंबंधित आलोचनाओं का भी स्वागत है।
attribute doc string
में PEP 257 में एक उल्लेख है जो अच्छी तरह से ज्ञात नहीं है और इसे खोजने में मुश्किल लगता है जो OPs प्रश्न का उत्तर दे सकता है, और कुछ स्रोत टूल द्वारा समर्थित है। यह राय नहीं है। यह तथ्य है, और भाषा का हिस्सा है, और बहुत ज्यादा वही है जो ओपी चाहता है।