यह निश्चित रूप से स्थानीयकरण के लिए अनुशंसित नहीं है, जैसा कि आपके उदाहरण में है।
इस बात पर विचार करने की मुख्य बात यह है कि कक्षा के विशेष संस्करणों में कितना कोड समान बनाम होगा। यदि केवल थोड़ी सी मात्रा अलग है, या यदि केवल डेटा अलग है ("हैलो" बनाम "सलात"), तो बेहतर तरीके हैं।
एक मामला जहां मैं वर्गों की सशर्त घोषणा मान सकता हूं, यदि मैं दो अलग-अलग ओएस पर कार्यक्षमता प्रदान कर रहा हूं, और यह कार्यक्षमता दोनों के बीच बहुत अलग है। उदाहरण के तौर पर, शायद मैं एक स्क्रिप्ट से आईट्यून्स ड्राइव करने की कोशिश कर रहा हूं, और मैकोज़ पर मैं इसे चलाने के लिए ऐप्पलस्क्रिप्ट का उपयोग कर रहा हूं, लेकिन विंडोज़ पर मुझे COM का उपयोग करना होगा। मैं एक रैपर वर्ग बना सकता हूं कि मेरा शेष कोड इस बात की देखभाल किए बिना उपयोग कर सकता है कि किस ओएस का उपयोग किया जा रहा था।
स्रोत
2010-09-16 19:08:33
क्षमा करें, मैं पूछने के लिए अगर यह अभ्यास की सिफारिश की थी मतलब है। प्रश्न अपडेट किया गया। – ash
अधिक जटिल मामलों के लिए, अनुशंसित अभ्यास [मेटाक्लासस] (http://www.ibm.com/developerworks/linux/library/l-pymeta.html) होगा, इसलिए आप स्वयं को दोहराएं नहीं। स्थानीयकरण के विशिष्ट मामले के लिए –
बीटीडब्ल्यू, मैं मानक पुस्तकालय में 'gettext' मॉड्यूल की अनुशंसा करता हूं। इसका उपयोग करके आपके उदाहरण को एक ही वर्ग द्वारा 'self.greeting = _ ("हैलो")' के साथ संभाला जा सकता है। – martineau