निम्नलिखित वर्ग पर विचार करें:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
मेरे सहकर्मी इसे इस तरह परिभाषित करते हैं:
class Person:
name = None
age = None
def __init__(self, name, age):
self.name = name
self.age = age
इसका मुख्य कारण यह है कि उनकी पसंद का संपादक स्वतः पूर्णता के गुणों को दर्शाता है।
व्यक्तिगत रूप से, मैं बाद वाले को नापसंद करता हूं, क्योंकि इसका कोई मतलब नहीं है कि एक वर्ग के पास उन गुणों को निर्धारित किया गया है None
।
कौन सा बेहतर अभ्यास होगा और किन कारणों से?
__init__
का उपयोग करके, पहले से ही विशेषताओं को सेट करना स्वत: पूर्णता आदि प्रदान करता है। इसके अलावा, None
आईडीई को विशेषता के लिए बेहतर प्रकार का अनुमान लगाने से रोकता है, इसलिए इसके बजाय एक संवेदी डिफ़ॉल्ट का उपयोग करना बेहतर है (जब मुमकिन)।
typing
मॉड्यूल है, जो आपको आईडीई और लिंटर को संकेत प्रदान करने की अनुमति देता है, अगर उस तरह की चीज आपके फैंस को गुदगुदी करती है ...
self
। भले ही वे सौंपे गए हों self.name
या self.age
नहीं , __init__
उदाहरण के लिए self
, वे केवल कक्षा में दिखाई देते हैं Person
।