में गुणों का उपयोग करने पर जमानत करनी चाहिए या नहीं, मैं अपने ऐप में विशिष्ट सेटर्स और गेटर्स के बजाय गुणों का उपयोग करने की कोशिश कर रहा हूं। वे अधिक पाइथनिक लगते हैं और आम तौर पर मेरे कोड को और अधिक पठनीय बनाते हैं।आश्चर्य है कि मुझे केवल पाइथन
एक मुद्दे को छोड़कर अधिक पठनीय: टाइपो।
निम्नलिखित सरल उदाहरण पर विचार करें (ध्यान दें, मेरे गुण वास्तव में कुछ प्रसंस्करण भले ही उदाहरण यहाँ सिर्फ सेट एक सरल चर करते हैं या वापसी) उत्पादन, जो कोई एक छोटे से बारीकी से पढ़ता है देखेंगे के रूप में
class GotNoClass(object):
def __init__(self):
object.__init__(self)
self.__a = None
def __set_a(self, a):
self.__a = a
def __get_a(self):
return self.__a
paramName = property(__get_a, __set_a)
if __name__ == "__main__":
classy = GotNoClass()
classy.paramName = 100
print classy.paramName
classy.paranName = 200
print classy.paramName
#oops! Typo above! as seen by this line:
print classy.paranName
, है:
100
100
200
ओह। इस तथ्य को छोड़कर नहीं होना चाहिए था कि मैंने एक टाइपो बनाया - मैंने परमनाम के बजाय परानानाम (दो एन) लिखा था।
इस सरल उदाहरण में डीबग करना आसान है, लेकिन यह मुझे मेरी बड़ी परियोजना में चोट पहुंचा रहा है। चूंकि पाइथन खुशी से एक नया चर बनाता है जब मैं गलती से संपत्ति का उपयोग करना चाहता था, मुझे अपने कोड में सूक्ष्म त्रुटियां मिलती हैं। त्रुटियां जो मुझे कई बार ट्रैक करने में मुश्किल लग रही हैं। इससे भी बदतर, मैंने एक बार एक ही टाइपो को दो बार इस्तेमाल किया (एक बार जब मैं सेटिंग कर रहा था और बाद में एक बार जब मैं प्राप्त कर रहा था) तो मेरा कोड काम करने लग रहा था लेकिन बहुत बाद में, जब कोड की एक अलग शाखा ने अंततः इस संपत्ति तक पहुंचने की कोशिश की (सही ढंग से) मुझे गलत मूल्य मिला - लेकिन मुझे एहसास हुआ कि मेरे नतीजे थोड़े दूर थे, मुझे कई दिन लग गए।
अब मुझे पता है कि यह एक मुद्दा है, मैं अपने कोड को बारीकी से पढ़ने में अधिक समय बिता रहा हूं, लेकिन आदर्श रूप से मुझे इस स्थिति को स्वचालित रूप से पकड़ने का एक तरीका होगा - अगर मुझे केवल एक याद आती है तो मैं एक त्रुटि पेश नहीं कर सकता एक उचित समय बीतने तक दिखाएं ...
तो मुझे आश्चर्य है, क्या मुझे बस पुराने पुराने सेटर्स और गेटर्स का उपयोग करने के लिए स्विच करना चाहिए? या इस स्थिति से बचने के लिए कुछ साफ रास्ता है? क्या लोग इन त्रुटियों को मैन्युअल रूप से पकड़ने के लिए खुद पर भरोसा करते हैं? हां, मैं एक पेशेवर प्रोग्रामर नहीं हूं, सिर्फ कोई काम पर कुछ काम करने की कोशिश कर रहा है और मुझे वास्तव में इस तक पहुंचने का सबसे अच्छा तरीका नहीं पता है।
धन्यवाद।
पीएस मैं समझता हूं कि यह पाइथन के लाभों में से एक है और मैं इसके बारे में शिकायत नहीं कर रहा हूं। बस सोच रहा हूं कि मैं स्पष्ट सेटर्स और गेटर्स का उपयोग कर बेहतर होगा या नहीं।
एक ही चीज सरल विशेषताओं के लिए होती है, स्थानीय चर का उल्लेख नहीं करना। यह भाषा के डिजाइन का प्रत्यक्ष दुष्प्रभाव है और इसे "ठीक करने" की कोशिश करने से आम तौर पर बड़ी समस्याएं पैदा होती हैं। हालांकि, मैंने इसे कभी भी एक मुद्दा नहीं पाया है। –
यह बिल्कुल सही है और मैंने पोस्ट करने के बाद मैंने इसके बारे में थोड़ा और सोचा। मुझे लगता है कि यह और अधिक होने का कारण यह है कि मैं अब गुणों पर भरोसा कर रहा हूं (बनाम मेरे पुराने सेटर्स और गेटर्स) और इसलिए इस तरह की त्रुटि में भाग लेने की अधिक संभावना है। यह चाल संभवतः जितनी ज्यादा हो सके मुद्दे को कम करने और अधिक सावधान रहना होगा। – Ben