मैं ऐसे किसी भी संसाधन की तलाश कर रहा हूं, जो पायथन का उपयोग करके बेस्ट प्रैक्टिसेज, डिजाइन पैटर्न और SOLID सिद्धांतों का उदाहरण देता हो।
मैं ऐसे किसी भी संसाधन की तलाश कर रहा हूं, जो पायथन का उपयोग करके बेस्ट प्रैक्टिसेज, डिजाइन पैटर्न और SOLID सिद्धांतों का उदाहरण देता हो।
जवाबों:
इनमें कुछ ओवरलैप हैं
अजगर में इंटरमीडिएट और एडवांस्ड सॉफ्टवेयर बढ़ईगीरी
एक अजगर की तरह कोड: मुहावरेदार पायथन
Google डेवलपर्स डे यूएस - पायथन डिज़ाइन पैटर्न
एक अन्य संसाधन पायथन व्यंजनों में उदाहरण के लिए है । एक अच्छी संख्या सर्वोत्तम प्रथाओं का पालन नहीं करती है लेकिन आप वहां कुछ पैटर्न पा सकते हैं जो उपयोगी हैं
ब्रूस एकेल की " पायथन में सोच " डिजाइन पैटर्न पर भारी पड़ती है
आप यहां और यहां से शुरुआत कर सकते हैं ।
डिज़ाइन पैटनर्स पर अधिक गहराई से देखने के लिए आपको डिज़ाइन पैटर्न पर देखना चाहिए : पुन: प्रयोज्य ऑब्जेक्ट-ओरिएंटेड सॉफ़्टवेयर के तत्व । स्रोत कोड पायथन में नहीं है, लेकिन पैटर्न को समझने के लिए यह आपके लिए होने की आवश्यकता नहीं है।
जब आप उन वस्तुओं पर कॉलिंग विशेषताओं का उपयोग करके अपने कोड को सरल बनाने के लिए कुछ का उपयोग कर सकते हैं जो मौजूद हो सकती हैं या नहीं, तो ऑब्जेक्ट ऑब्जेक्ट डिज़ाइन पैटर्न का उपयोग करना है (जिस पर मुझे पायथन कुकबुक में पेश किया गया था )।
मोटे तौर पर, नल की वस्तुओं के साथ लक्ष्य अन्य भाषाओं में अक्सर इस्तेमाल किए गए आदिम डेटा प्रकार कोई नहीं पायथन या नल (या अशक्त संकेत) के लिए एक 'बुद्धिमान' प्रतिस्थापन प्रदान करना है। इनका उपयोग कई मामलों के लिए किया जाता है, जिसमें महत्वपूर्ण मामला भी शामिल है, जहाँ कुछ तत्वों के समूह का एक सदस्य किसी भी कारण से विशेष है। ज्यादातर यह सामान्य तत्वों और आदिम अशक्त मूल्य के बीच अंतर करने के लिए सशर्त बयानों के परिणामस्वरूप होता है।
यह ऑब्जेक्ट केवल विशेषता त्रुटि की कमी को खाती है, और आप उनके अस्तित्व की जांच करने से बच सकते हैं।
इससे ज्यादा कुछ नहीं है
class Null(object):
def __init__(self, *args, **kwargs):
"Ignore parameters."
return None
def __call__(self, *args, **kwargs):
"Ignore method calls."
return self
def __getattr__(self, mname):
"Ignore attribute requests."
return self
def __setattr__(self, name, value):
"Ignore attribute setting."
return self
def __delattr__(self, name):
"Ignore deleting attributes."
return self
def __repr__(self):
"Return a string representation."
return "<Null>"
def __str__(self):
"Convert to a string and return it."
return "Null"
इसके साथ, यदि आप ऐसा करते हैं तो Null("any", "params", "you", "want").attribute_that_doesnt_exists()
विस्फोट नहीं होगा, लेकिन बस चुपचाप इसके बराबर हो जाता है pass
।
आम तौर पर आप ऐसा कुछ करते हैं
if obj.attr:
obj.attr()
इसके साथ, आप बस करें:
obj.attr()
और इसके बारे में भूल जाओ। खबरदार कि Null
वस्तु का व्यापक उपयोग संभवतः आपके कोड में कीड़े छिपा सकता है।
आप इस लेख (.pdf फ़ाइल का चयन करें) को पढ़ने की इच्छा कर सकते हैं , जो गतिशील वस्तु उन्मुख भाषाओं (यानी पायथन) में डिज़ाइन पैटर्न पर चर्चा करता है। पृष्ठ को उद्धृत करने के लिए:
यह पेपर बताता है कि "गैंग ऑफ़ फोर", या "GOF" पुस्तक से पैटर्न, जैसा कि अक्सर कहा जाता है, तब प्रकट होता है जब इसी तरह की समस्याओं को एक गतिशील, उच्च-क्रम, ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा का उपयोग करके संबोधित किया जाता है। कुछ पैटर्न गायब हो जाते हैं - अर्थात, वे सीधे भाषा सुविधाओं द्वारा समर्थित होते हैं, कुछ पैटर्न सरल होते हैं या एक अलग फ़ोकस होते हैं, और कुछ अनिवार्य रूप से अपरिवर्तित होते हैं।