कभी-कभी मैं किसी ऑब्जेक्ट के लिए गेटर विशेषताओं को लिखना पसंद करता हूं जैसे कि पहली बार उन्हें बुलाया जाता है, भारी भारोत्तोलन एक बार किया जाता है, और वह मूल्य सहेजा जाता है और भविष्य की कॉल पर वापस आ जाता है। उद्देश्य-सी में मैं इस मान को पकड़ने के लिए एक ivar या स्थिर चर का उपयोग करूंगा। कुछ ऐसा:आलसी गेटर्स को लागू करने के लिए पायथन में उचित पैटर्न क्या है?
- (id)foo
{
if (_foo == nil)
{
_foo = // hard work to figure out foo
}
return _foo
}
क्या यह पैटर्न पैटर्न पायथन में अच्छी तरह से पकड़ता है, या क्या ऐसा करने का एक और स्वीकार्य तरीका है? मेरे पास मूल रूप से वही बात है। मुझे अपने समाधान के बारे में पसंद नहीं है कि मेरी वस्तु उन मूल्यों के लिए मूल्यों और ही टिककर खेल के साथ भरा हुआ हो जाता है:
def foo(self):
if not hasattr(self, "mFoo":
self.mFoo = # heavy lifting to compute foo
return self.mFoo
धन्यवाद, @property उस वर्ग पर नहीं जाता है, हालांकि यह करता है? –
@ डैरेन वास्तव में ऐसा नहीं करता है, यही मुझे मध्यरात्रि के गलत पक्ष पर पोस्ट करने के लिए मिलता है। :) मैंने इसे अभी तय कर लिया है। – lvc