क्या मुझे अपने वर्ग के सदस्यों को इस तरह डिफ़ॉल्ट मान देना चाहिए:
class Foo:
num = 1
या इस तरह?
class Foo:
def __init__(self):
self.num = 1
में इस सवाल का मैं दोनों ही मामलों में पता चला कि,
bar = Foo()
bar.num += 1
एक अच्छी तरह से परिभाषित ऑपरेशन है।
मैं समझता हूं कि पहला तरीका मुझे एक वर्ग चर देगा, जबकि दूसरा नहीं होगा। हालाँकि, अगर मुझे एक वर्ग चर की आवश्यकता नहीं है, लेकिन केवल मेरे उदाहरण चर के लिए एक डिफ़ॉल्ट मान सेट करने की आवश्यकता है, क्या दोनों विधियां समान रूप से अच्छी हैं? या उनमें से एक दूसरे की तुलना में अधिक 'पायथोनिक' है?
एक बात मैंने देखी है कि Django ट्यूटोरियल में, वे मॉडल घोषित करने के लिए दूसरी विधि का उपयोग करते हैं। व्यक्तिगत रूप से मुझे लगता है कि दूसरी विधि अधिक सुरुचिपूर्ण है, लेकिन मैं जानना चाहूंगा कि 'मानक' तरीका क्या है।
self.attr = attr or []
भीतर लिखें__init__
। यह उसी परिणाम को प्राप्त करता है (मुझे लगता है) और अभी भी स्पष्ट और पठनीय है।