कहें कि आपके पास पाइथन में एक सार्वजनिक विधि है जिसका प्राथमिक उद्देश्य अंतर्निहित डेटा विशेषता (यानी आंतरिक बैकिंग स्टोर) के मूल्य को पुनर्प्राप्त करना है। विधि में आलसी मूल्यांकन तर्क हो सकता है, आदि। एक संपत्ति ऐसी विधि का एक उदाहरण है।पायथन में, आंतरिक संपत्ति की बैकिंग स्टोर के लिए पसंदीदा नामकरण सम्मेलन क्या है?
फिर डेटा विशेषता के लिए अंडरस्कोर उपसर्ग को छोड़कर, विधि और डेटा विशेषता के लिए उसी नाम का उपयोग करना स्वाभाविक है। के लिए example--
class C(object):
def __init__(self):
self._x = None
@property
def x(self):
"""I'm the 'x' property."""
return self._x
(Python's "property" documentation से)
लेकिन कुछ पसंदीदा सम्मेलनों क्या कर रहे हैं विधि आंतरिक उपयोग के लिए है और इसलिए ही एक अंडरस्कोर के साथ उपसर्ग है? बैकिंग स्टोर को दो प्रमुख अंडरस्कोर के साथ उपसर्ग करना नाम उलझन का आह्वान करेगा और इसलिए आदर्श नहीं है।
दो संभावनाओं be-- सकता
def _get_x(self):
return self._x
def _x(self):
return self._x_
अजगर शैली दूसरे कहते हैं (एक अंडरस्कोर जोड़कर), हालांकि, केवल आरक्षित कीवर्ड के साथ टकराव से बचने के लिए इस्तेमाल किया जाना चाहिए।
मुझे खुशी है कि टिप्पणियां एक -1 स्कोर नहीं हो सकता हूँ। –
मुझे लगता है कि एक निजी संपत्ति होने से बहुत से लोगों को भ्रमित कर दिया जाएगा। मैं सुझाव देता हूं कि 'संपत्ति' से आपकी अपनी कक्षा को प्राप्त करने का सुझाव दिया जाए, शायद, 'cached_property', और इसके लिए' __get__' को परिभाषित करने के लिए, अगर यह पहले से नहीं है, और यदि यह है, तो उस मूल्य को वापस लौटाएं जब यह वापस लौटाया जाए बुलाया गया था। और कैश किए गए मान को भूलने के लिए '__delete__' को परिभाषित करें। – Omnifarious
मैंने अभी यह देखने के लिए उनमें से एक लिखा है कि यह किया जा सकता है या नहीं। और वास्तव में यह कर सकता है, लेकिन यह थोड़ा बदसूरत है, और कमजोर संदर्भों का उपयोग करने की आवश्यकता है, जिसका मतलब है कि जिस संपत्ति को संपत्ति में रखा गया है वह कमजोर संदर्भ-सक्षम होना चाहिए। – Omnifarious