मेरे पास स्थिर तरीकों से भरा पाइथन वर्ग है। कच्चे कार्यों की बजाय कक्षा में पैकेजिंग के फायदे और नुकसान क्या हैं?क्या पाइथन कक्षा का उपयोग करने में कोई फायदा है?
उत्तर
कोई नहीं है। यह मॉड्यूल के लिए हैं: संबंधित कार्यों को समूहीकृत करना। स्थैतिक तरीकों से भरी कक्षा का उपयोग करने से मुझे जैवितीस से क्रिंग कर दिया जाता है। एकमात्र समय मैं एक स्थिर कार्य का उपयोग करता हूं यदि यह कार्य कक्षा का एक अभिन्न हिस्सा है। (वास्तव में, मैं शायद किसी भी तरह से कक्षा विधि का उपयोग करना चाहता हूं।)
मैं बेंजामिन से सहमत हूं। स्थिर तरीकों का एक गुच्छा होने के बजाय, आपको शायद कार्यों का एक गुच्छा होना चाहिए। और यदि आप उन्हें व्यवस्थित करना चाहते हैं, तो आपको कक्षाओं के बजाय मॉड्यूल का उपयोग करने के बारे में सोचना चाहिए। हालांकि, अगर आप ओओ होने के लिए अपने कोड को दोबारा प्रतिक्रिया देना चाहते हैं, तो यह एक और मामला है।
न केवल कोई फायदे हैं, लेकिन यह विधियों से भरा मॉड्यूल का उपयोग करने से चीजों को धीमा कर देता है। जावा या सी # में उनके लिए पाइथन में स्थैतिक तरीकों की बहुत कम आवश्यकता है, इन्हें बहुत विशेष मामलों में उपयोग किया जाता है।
नहीं। यह उन्हें बेहतर बनाने के लिए बेहतर होगा और यदि वे संबंधित हैं, तो उन्हें अपने मॉड्यूल में रखें। उदाहरण के लिए, अगर आप इस तरह एक वर्ग है:
class Something(object):
@staticmethod
def foo(x):
return x + 5
@staticmethod
def bar(x, y):
return y + 5 * x
तो यह बेहतर होगा की तरह एक मॉड्यूल है,
# something.py
def foo(x):
return x + 5
def bar(x, y):
return y + 5 * x
इस तरह, आप उन्हें निम्नलिखित तरीके से उपयोग करें:
import something
print something.foo(10)
print something.bar(12, 14)
नामस्थानों से डरो मत। ;-)
कक्षाएं केवल तब उपयोगी होती हैं जब आपके पास डेटा के सेट (उदाहरण गुण) के साथ इंटरैक्ट करने की कार्यक्षमता का एक सेट होता है जिसे फ़ंक्शन कॉल के बीच जारी रखने और एक अलग फैशन में संदर्भित करने की आवश्यकता होती है।
यदि आपकी कक्षा में स्थिर विधियों के अलावा कुछ भी नहीं है, तो आपकी कक्षा केवल सिंटैक्टिक क्रूर है, और सीधे फ़ंक्शन बहुत स्पष्ट हैं और आपको जो चाहिए वह सब कुछ है।
अपने कार्य एक दूसरे या वैश्विक राज्य पर निर्भर कर रहे हैं, तो भी तीसरे दृष्टिकोण पर विचार करें:
class Something(object):
def foo(self, x):
return x + 5
def bar(self, x, y):
return y + 5 * self.foo(x)
something = Something()
, यह समाधान आपको अलगाव में एक समारोह का परीक्षण कर सकते का उपयोग करते हुए, क्योंकि यदि आप किसी अन्य समारोह के व्यवहार को ओवरराइड या इंजेक्षन कर सकते हैं कन्स्ट्रक्टर का उपयोग कर निर्भरता।
कार्यों की प्रकृति पर निर्भर करता है। यदि वे दृढ़ता से असंबंधित नहीं हैं (उनके बीच न्यूनतम कॉल की संख्या) और उनके पास कोई राज्य नहीं है तो हाँ, मैं उन्हें एक मॉड्यूल में डंप करूंगा। हालांकि, अगर आप खिड़की से विरासत फेंक रहे हैं तो आपको कभी भी व्यवहार को संशोधित करने की आवश्यकता है, तो आप पैर में खुद को शूटिंग कर सकते हैं। तो मेरा जवाब शायद है, और सुनिश्चित करें कि आप अपने विशेष परिदृश्य को देखें, फिर हमेशा मान लें कि एक मॉड्यूल विधियों का एक समूह एकत्र करने का सबसे अच्छा तरीका है।
- 1. क्या ऑब्जेक्ट इनिशिलाइज़र का उपयोग करने का कोई फायदा है?
- 2. क्या सीएसएस में बहुत विशिष्ट चयनकर्ताओं का उपयोग करने का कोई फायदा है?
- 3. क्या ऑब्जेक्ट पर संपत्ति घोषित करने के बजाए प्रोटोटाइप का उपयोग करने का कोई फायदा है?
- 4. क्या पाइथन में किसी अन्य कक्षा के अंदर कक्षा को परिभाषित करने का कोई लाभ है?
- 5. क्या पर्ल या पायथन पर बैश का उपयोग करने का कोई फायदा है?
- 6. टेक्स्टबॉक्स पर RichTextBox का उपयोग करने का क्या फायदा है?
- 7. इंटरलाक्ड क्लास का उपयोग करने के विपरीत अस्थिर कीवर्ड का उपयोग करने का कोई फायदा है?
- 8. पायथन वर्चुअलबॉक्स एपीआई का उपयोग करने का क्या फायदा है?
- 9. क्या PHP में पहले शून्य का उपयोग करने का कोई फायदा है?
- 10. क्या एंड एंड ओ एंड एंड और || का उपयोग करने का कोई फायदा है PHP में?
- 11. क्या एएसपी.नेट में सिक्योरस्ट्रिंग का उपयोग करने का कोई फायदा है?
- 12. क्या एमवीसी में एचटीएमएलहेल्पर का उपयोग करने का कोई फायदा है?
- 13. क्या गिट svn क्लोन में --no-metadata का उपयोग करने का कोई फायदा है?
- 14. क्या पाइथन कक्षा में सभी कार्यों को लूप करने और निष्पादित करने का कोई तरीका है?
- 15. पाइथन मल्टीप्रोसेसिंग का उपयोग करने में कोई समस्या क्या होगी?
- 16. क्या रिटर्न स्टेटमेंट का उपयोग करने का कोई फायदा है जो कुछ भी नहीं देता है?
- 17. क्या '* 2' के बजाय '<< 1' का उपयोग करने का कोई फायदा है?
- 18. क्या पीजीपी का उपयोग करके दो बार एन्क्रिप्ट करने का कोई फायदा है?
- 19. पायथन में निजी नाम मैंगलिंग का क्या फायदा है?
- 20. क्या मानक सी ++ या सी # पर सी ++/सीएलआई का उपयोग करने का कोई फायदा है?
- 21. सरणी का उपयोग करने से arrayWithCapacity का उपयोग करने का क्या फायदा है?
- 22. उद्देश्य-सी में कार्यों पर ब्लॉक का उपयोग करने का कोई फायदा है?
- 23. रनटाइम पर कक्षाएं बनाते समय `exec` over` type() `का उपयोग करने में क्या फायदा है?
- 24. सी #: क्या उनके आवंटन के रिवर्स ऑर्डर में संसाधनों का निपटान करने का कोई फायदा है?
- 25. एक उपयोगकर्तास्क्रिप्ट में, querySelector() बनाम jQuery के $() का उपयोग करने के लिए कोई फायदा है?
- 26. "लिंक के रूप में जोड़ें" का उपयोग करने के बजाय पोर्टेबल क्लास लाइब्रेरी का उपयोग करने का क्या फायदा है?
- 27. एएसपी.नेट एमवीसी 3 में सत्र-कम नियंत्रकों का उपयोग करने का क्या फायदा है?
- 28. जारी करने पर फ़िल्टर_has_var() का उपयोग करने का क्या फायदा है()
- 29. जैस्मीन के स्पाइज़ में निर्मित Sinon.js का उपयोग करने का क्या फायदा है?
- 30. क्या थ्रेडलॉक पर थ्रेडसेफ ऑब्जेक्ट डालने में कोई फायदा है?
मैं यहां सर्वसम्मति से सहमत हूं, इसलिए मैंने सोचा है: पाइथन स्थिर तरीकों का समर्थन क्यों करता है? –
@ डेयरी ज्यादातर ओओ स्थिरता के लिए –